Skip to content

Commit f3c5829

Browse files
authored
Test improvements (#66)
* Use `assertRedirectToRoute` where possible * Use `from` in tests to better test redirects
1 parent b3bb762 commit f3c5829

8 files changed

+33
-25
lines changed

tests/Feature/Controllers/AccountControllerTest.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Inertia\Testing\AssertableInertia as Assert;
66

77
use function Pest\Laravel\actingAs;
8+
use function Pest\Laravel\from;
89
use function Pest\Laravel\get;
910
use function Pest\Laravel\patch;
1011

@@ -32,14 +33,15 @@
3233
'password' => 'oldPassword#123',
3334
]);
3435

35-
actingAs($user)
36+
from(route('account.edit'))
37+
->actingAs($user)
3638
->patch(route('account.update'), $newData = [
3739
'first_name' => 'Tim',
3840
'last_name' => 'Drake',
3941
'email' => 'tim@test.com',
4042
'password' => 'newPassword#123',
4143
])
42-
->assertRedirect()
44+
->assertRedirectToRoute('account.edit')
4345
->assertSessionHas('success', __('account.updated'));
4446

4547
expect($user->refresh())
@@ -72,11 +74,11 @@
7274
describe('Guests', function () {
7375
test("Can't access the edit page", function () {
7476
get(route('account.edit'))
75-
->assertRedirect(route('login'));
77+
->assertRedirectToRoute('login');
7678
});
7779

7880
test("Can't update details", function () {
7981
patch(route('account.update'))
80-
->assertRedirect(route('login'));
82+
->assertRedirectToRoute('login');
8183
});
8284
});

tests/Feature/Controllers/EmailVerificationControllerTest.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Inertia\Testing\AssertableInertia as Assert;
66

77
use function Pest\Laravel\actingAs;
8+
use function Pest\Laravel\from;
89
use function Pest\Laravel\get;
910
use function Pest\Laravel\withoutExceptionHandling;
1011

@@ -31,7 +32,7 @@
3132
'id' => $user->getKey(),
3233
'hash' => sha1($user->getEmailForVerification()),
3334
]))
34-
->assertRedirect(route('home'));
35+
->assertRedirectToRoute('home');
3536

3637
expect($user->refresh()->email_verified_at)->not()->toBeNull();
3738
});
@@ -41,9 +42,10 @@
4142

4243
$user = User::factory()->unverified()->create();
4344

44-
actingAs($user)
45+
from(route('verification.notice'))
46+
->actingAs($user)
4547
->post(route('verification.send'))
46-
->assertRedirect();
48+
->assertRedirectToRoute('verification.notice');
4749

4850
Notification::assertSentTo($user, Illuminate\Auth\Notifications\VerifyEmail::class);
4951
});
@@ -52,6 +54,6 @@
5254
describe('Guests', function () {
5355
test("Can't access the verification page", function () {
5456
get(route('verification.notice'))
55-
->assertRedirect(route('login'));
57+
->assertRedirectToRoute('login');
5658
});
5759
});

tests/Feature/Controllers/HomeControllerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@
2020
describe('Guests', function () {
2121
test("Can't access the home page", function () {
2222
get(route('home'))
23-
->assertRedirect(route('login'));
23+
->assertRedirectToRoute('login');
2424
});
2525
});

tests/Feature/Controllers/LoginControllerTest.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
use function Pest\Laravel\actingAs;
77
use function Pest\Laravel\assertAuthenticated;
88
use function Pest\Laravel\assertGuest;
9+
use function Pest\Laravel\from;
910
use function Pest\Laravel\get;
1011
use function Pest\Laravel\post;
1112

1213
describe('Users', function () {
1314
test("Can't access the login page", function () {
1415
actingAs(User::factory()->create())
1516
->get(route('login'))
16-
->assertRedirect(route('home'));
17+
->assertRedirectToRoute('home');
1718
});
1819
});
1920

@@ -36,7 +37,7 @@
3637
'email' => $user->email,
3738
'password' => '12345',
3839
])
39-
->assertRedirect(route('home'));
40+
->assertRedirectToRoute('home');
4041

4142
assertAuthenticated();
4243
});
@@ -48,11 +49,12 @@
4849

4950
$redirect = 'https://google.com';
5051

51-
post(route('login'), [
52-
'email' => $user->email,
53-
'password' => '12345',
54-
'redirect' => $redirect,
55-
])
52+
from(route('login'))
53+
->post(route('login'), [
54+
'email' => $user->email,
55+
'password' => '12345',
56+
'redirect' => $redirect,
57+
])
5658
->assertRedirect($redirect);
5759

5860
assertAuthenticated();

tests/Feature/Controllers/LogoutControllerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
test('Can logout', function () {
1111
actingAs(User::factory()->create())
1212
->post(route('logout'))
13-
->assertRedirect(route('login'));
13+
->assertRedirectToRoute('login');
1414

1515
assertGuest();
1616
});
@@ -19,6 +19,6 @@
1919
describe('Guests', function () {
2020
test("Can't logout", function () {
2121
post(route('logout'))
22-
->assertRedirect(route('login'));
22+
->assertRedirectToRoute('login');
2323
});
2424
});

tests/Feature/Controllers/OrganisationControllerTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use App\Models\User;
44

55
use function Pest\Laravel\actingAs;
6+
use function Pest\Laravel\from;
67
use function Pest\Laravel\get;
78
use function Pest\Laravel\patch;
89

@@ -28,11 +29,12 @@
2829
test("Can update their organisation's name", function () {
2930
expect($this->adminUser->organisation->name)->toBe('GCPD');
3031

31-
actingAs($this->adminUser)
32+
from(route('organisation.edit'))
33+
->actingAs($this->adminUser)
3234
->patch(route('organisation.update'), [
3335
'name' => 'New Name',
3436
])
35-
->assertRedirect();
37+
->assertRedirectToRoute('organisation.edit');
3638

3739
expect($this->adminUser->organisation->refresh()->name)->toBe('New Name');
3840
});

tests/Feature/Controllers/RegisterControllerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
test("Can't access the register page", function () {
1515
actingAs(User::factory()->create())
1616
->get(route('register'))
17-
->assertRedirect(route('home'));
17+
->assertRedirectToRoute('home');
1818
});
1919
});
2020

@@ -39,7 +39,7 @@
3939
'email' => $email,
4040
'password' => 'P$ssword12345#',
4141
])
42-
->assertRedirect(route('home'));
42+
->assertRedirectToRoute('home');
4343

4444
assertDatabaseHas('users', [
4545
'email' => $email,

tests/Feature/Controllers/ResetPasswordControllerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
post(route('password.store'), [
2929
'email' => $user->email,
3030
])
31-
->assertRedirect(route('login'));
31+
->assertRedirectToRoute('login');
3232

3333
Notification::assertSentTo($user, ResetPassword::class);
3434
});
@@ -41,7 +41,7 @@
4141
'email' => fake()->email(),
4242
])
4343
->assertsessionHasErrors('email')
44-
->assertRedirect(route('password'));
44+
->assertRedirectToRoute('password');
4545

4646
Notification::assertNothingSent();
4747
});
@@ -75,5 +75,5 @@
7575
'password' => $newPassword,
7676
'password_confirmation' => $newPassword,
7777
]))
78-
->assertRedirect();
78+
->assertRedirectToRoute('login');
7979
});

0 commit comments

Comments
 (0)