Skip to content

Commit d9c7969

Browse files
Refactor existing tests
1 parent 355fc84 commit d9c7969

10 files changed

+73
-50
lines changed

tests/Feature/Auth/AuthenticationTest.php renamed to tests/Feature/Http/Auth/AuthenticationTest.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
<?php
22

3-
namespace Tests\Feature\Auth;
3+
namespace Tests\Feature\Http\Auth;
44

5+
use App\Http\Controllers\Auth\AuthenticatedSessionController;
56
use App\Models\User;
67
use App\Options\ActiveStatus;
78
use App\Providers\RouteServiceProvider;
89
use Illuminate\Foundation\Testing\RefreshDatabase;
10+
use PHPUnit\Framework\Attributes\CoversClass;
911
use Tests\TestCase;
1012

11-
/**
12-
* @covers \App\Http\Controllers\Auth\AuthenticatedSessionController
13-
*/
13+
#[CoversClass(AuthenticatedSessionController::class)]
1414
class AuthenticationTest extends TestCase
1515
{
1616
use RefreshDatabase;
1717

1818
public function testLoginScreenCanBeRendered(): void
1919
{
20-
$response = $this->get('/login');
21-
22-
$response->assertStatus(200);
20+
$this->assertRouteAccessibleAsGuest('/login');
2321
}
2422

2523
public function testUsersCanAuthenticateUsingTheLoginScreen(): void

tests/Feature/Auth/EmailVerificationTest.php renamed to tests/Feature/Http/Auth/EmailVerificationTest.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
<?php
22

3-
namespace Tests\Feature\Auth;
3+
namespace Tests\Feature\Http\Auth;
44

5+
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
6+
use App\Http\Controllers\Auth\EmailVerificationPromptController;
7+
use App\Http\Controllers\Auth\VerifyEmailController;
58
use App\Models\User;
69
use App\Providers\RouteServiceProvider;
710
use Illuminate\Auth\Events\Verified;
811
use Illuminate\Foundation\Testing\RefreshDatabase;
912
use Illuminate\Support\Facades\Event;
1013
use Illuminate\Support\Facades\URL;
14+
use PHPUnit\Framework\Attributes\CoversClass;
1115
use Tests\TestCase;
1216

13-
/**
14-
* @covers \App\Http\Controllers\Auth\EmailVerificationNotificationController
15-
* @covers \App\Http\Controllers\Auth\EmailVerificationPromptController
16-
* @covers \App\Http\Controllers\Auth\VerifyEmailController
17-
*/
17+
#[CoversClass(EmailVerificationNotificationController::class)]
18+
#[CoversClass(EmailVerificationPromptController::class)]
19+
#[CoversClass(VerifyEmailController::class)]
1820
class EmailVerificationTest extends TestCase
1921
{
2022
use RefreshDatabase;
@@ -25,9 +27,7 @@ public function testEmailVerificationScreenCanBeRendered(): void
2527
'email_verified_at' => null,
2628
]);
2729

28-
$response = $this->actingAs($user)->get('/verify-email');
29-
30-
$response->assertStatus(200);
30+
$this->actingAs($user)->get('/verify-email')->assertOk();
3131
}
3232

3333
public function testEmailCanBeVerified(): void

tests/Feature/Auth/PasswordConfirmationTest.php renamed to tests/Feature/Http/Auth/PasswordConfirmationTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?php
22

3-
namespace Tests\Feature\Auth;
3+
namespace Tests\Feature\Http\Auth;
44

5+
use App\Http\Controllers\Auth\ConfirmablePasswordController;
56
use App\Models\User;
67
use Illuminate\Foundation\Testing\RefreshDatabase;
8+
use PHPUnit\Framework\Attributes\CoversClass;
79
use Tests\TestCase;
810

9-
/**
10-
* @covers \App\Http\Controllers\Auth\ConfirmablePasswordController
11-
*/
11+
#[CoversClass(ConfirmablePasswordController::class)]
1212
class PasswordConfirmationTest extends TestCase
1313
{
1414
use RefreshDatabase;

tests/Feature/Auth/PasswordResetTest.php renamed to tests/Feature/Http/Auth/PasswordResetTest.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
<?php
22

3-
namespace Tests\Feature\Auth;
3+
namespace Tests\Feature\Http\Auth;
44

5+
use App\Http\Controllers\Auth\NewPasswordController;
6+
use App\Http\Controllers\Auth\PasswordResetLinkController;
57
use App\Models\User;
68
use App\Notifications\ResetPasswordNotification;
79
use Illuminate\Foundation\Testing\RefreshDatabase;
810
use Illuminate\Support\Facades\Notification;
11+
use PHPUnit\Framework\Attributes\CoversClass;
912
use Tests\TestCase;
1013

11-
/**
12-
* @covers \App\Http\Controllers\Auth\NewPasswordController
13-
* @covers \App\Http\Controllers\Auth\PasswordResetLinkController
14-
*/
14+
#[CoversClass(NewPasswordController::class)]
15+
#[CoversClass(PasswordResetLinkController::class)]
1516
class PasswordResetTest extends TestCase
1617
{
1718
use RefreshDatabase;
1819

1920
public function testResetPasswordLinkScreenCanBeRendered(): void
2021
{
21-
$response = $this->get('/forgot-password');
22-
23-
$response->assertStatus(200);
22+
$this->assertRouteAccessibleAsGuest('/forgot-password');
2423
}
2524

2625
public function testResetPasswordLinkCanBeRequested(): void

tests/Feature/Auth/RegistrationTest.php renamed to tests/Feature/Http/Auth/RegistrationTest.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,31 @@
11
<?php
22

3-
namespace Tests\Feature\Auth;
3+
namespace Tests\Feature\Http\Auth;
44

5+
use App\Http\Controllers\Auth\RegisteredUserController;
56
use App\Providers\RouteServiceProvider;
67
use Illuminate\Foundation\Testing\RefreshDatabase;
78
use Illuminate\Support\Facades\Config;
9+
use PHPUnit\Framework\Attributes\CoversClass;
810
use Tests\TestCase;
911

10-
/**
11-
* @covers \App\Http\Controllers\Auth\RegisteredUserController
12-
*/
12+
#[CoversClass(RegisteredUserController::class)]
1313
class RegistrationTest extends TestCase
1414
{
1515
use RefreshDatabase;
1616

1717
public function testRegistrationScreenCannotBeRenderedIfNotEnabled(): void
1818
{
19-
$response = $this->get('/register');
19+
Config::set('app.features.registration', false);
2020

21-
$response->assertStatus(403);
21+
$this->get('/register')->assertForbidden();
2222
}
2323

2424
public function testRegistrationScreenCanBeRenderedIfEnabled(): void
2525
{
2626
Config::set('app.features.registration', true);
2727

28-
$response = $this->get('/register');
29-
30-
$response->assertStatus(200);
28+
$this->assertRouteAccessibleAsGuest('/register');
3129
}
3230

3331
public function testNewUsersCanRegister(): void
Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
<?php
22

3-
namespace Tests\Feature;
3+
namespace Tests\Feature\Http;
44

5+
use App\Http\Controllers\DashboardController;
56
use Illuminate\Foundation\Testing\RefreshDatabase;
7+
use PHPUnit\Framework\Attributes\CoversClass;
68
use Tests\TestCase;
79

8-
/**
9-
* @covers \App\Http\Controllers\DashboardController
10-
*/
10+
#[CoversClass(DashboardController::class)]
1111
class DashboardTest extends TestCase
1212
{
1313
use RefreshDatabase;
1414

1515
public function testTheApplicationReturnsSuccessfulResponse(): void
1616
{
17-
$response = $this->get('/');
18-
19-
$response->assertStatus(200);
17+
$this->assertRouteAccessibleAsGuest('/');
2018
}
2119
}

tests/Feature/UI/UserControllerTest.php renamed to tests/Feature/Http/UserControllerTest.php

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Tests\Feature\UI;
3+
namespace Tests\Feature\Http;
44

55
use App\Http\Controllers\UserController;
66
use App\Models\User;
@@ -17,14 +17,24 @@ class UserControllerTest extends TestCase
1717
{
1818
use RefreshDatabase;
1919

20-
public function testCanViewUsers(): void
20+
public function testUsersCanBeListedWithCorrectAbility(): void
2121
{
2222
$this->assertRouteOnlyAccessibleOnlyWithAbility('/users', Ability::ViewUsers);
2323
}
2424

25-
public function testUserCanBeCreated(): void
25+
public function testUserIsOnlyAccessibleWithCorrectAbility(): void
26+
{
27+
$this->assertRouteOnlyAccessibleOnlyWithAbility("/users/{$this->createRandomUser()->id}", Ability::ViewUsers);
28+
}
29+
30+
public function testCreateUserFormIsOnlyAccessibleWithCorrectAbility(): void
2631
{
2732
$this->assertRouteOnlyAccessibleOnlyWithAbility('/users/create', Ability::CreateUsers);
33+
}
34+
35+
public function testUserIsStored(): void
36+
{
37+
$this->actingAsUserWithAbility(Ability::CreateUsers);
2838

2939
Notification::fake();
3040

@@ -46,9 +56,9 @@ public function testUserCanBeCreated(): void
4656
Notification::assertNothingSent();
4757
}
4858

49-
public function testUserIsNotifiedIfEnabled(): void
59+
public function testUserIsStoredAndNotifiedIfEnabled(): void
5060
{
51-
$this->assertRouteOnlyAccessibleOnlyWithAbility('/users/create', Ability::CreateUsers);
61+
$this->actingAsUserWithAbility(Ability::CreateUsers);
5262

5363
Notification::fake();
5464

@@ -68,4 +78,14 @@ public function testUserIsNotifiedIfEnabled(): void
6878

6979
Notification::assertSentTo($user, AccountCreatedNotification::class);
7080
}
81+
82+
public function testEditUserFormIsAccessibleOnlyWithCorrectAbility(): void
83+
{
84+
$this->assertRouteOnlyAccessibleOnlyWithAbility("/users/{$this->createRandomUser()->id}/edit", Ability::EditUsers);
85+
}
86+
87+
private function createRandomUser(): User
88+
{
89+
return User::factory()->create();
90+
}
7191
}

tests/Feature/Livewire/Groups/EditGroupTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
use App\Models\Location;
99
use Illuminate\Support\Str;
1010
use Livewire\Livewire;
11+
use PHPUnit\Framework\Attributes\CoversClass;
1112
use Tests\TestCase;
1213
use Tests\Traits\ActsAsUser;
1314

15+
#[CoversClass(EditGroup::class)]
1416
class EditGroupTest extends TestCase
1517
{
1618
use ActsAsUser;

tests/Feature/Livewire/Groups/ManageGroupsTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
<?php
22

3-
namespace Livewire\Groups;
3+
namespace Tests\Feature\Livewire\Groups;
44

55
use App\Livewire\Groups\ManageGroups;
66
use App\Models\Event;
77
use App\Models\Group;
88
use App\Models\Location;
99
use Illuminate\Database\Eloquent\Factories\Sequence;
1010
use Livewire\Livewire;
11+
use PHPUnit\Framework\Attributes\CoversClass;
1112
use Tests\TestCase;
1213
use Tests\Traits\ActsAsUser;
1314

15+
#[CoversClass(ManageGroups::class)]
1416
class ManageGroupsTest extends TestCase
1517
{
1618
use ActsAsUser;

tests/Traits/ActsAsUser.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ protected function actingAsUserWithRoleName(string $roleName): User
6565
return $this->actingAsUserWithRole($adminRole);
6666
}
6767

68+
protected function assertRouteAccessibleAsGuest(string $route): void
69+
{
70+
Auth::logout(); // to make sure we act as a guest
71+
$this->get($route)->assertOk();
72+
}
73+
6874
protected function assertRouteAccessibleWithAbility(string $route, Ability $ability): void
6975
{
7076
$this->actingAsUserWithAbility($ability);

0 commit comments

Comments
 (0)