79 lines
2.2 KiB
PHP
79 lines
2.2 KiB
PHP
<?php
|
|
|
|
use App\Models\School;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
use function Pest\Laravel\actingAs;
|
|
use function Pest\Laravel\get;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
beforeEach(function () {
|
|
$this->adminUser = User::factory()->admin()->create();
|
|
$this->nonAdminUser = User::factory()->create();
|
|
$this->tabUser = User::factory()->tab()->create();
|
|
$this->users = User::factory(3)->create();
|
|
$this->schools = [];
|
|
foreach ($this->users as $user) {
|
|
$school = School::factory()->create();
|
|
$user->school_id = $school->id;
|
|
$user->save();
|
|
}
|
|
});
|
|
|
|
it('only shows for an admin user', function () {
|
|
// Act & Assert
|
|
$checkRoute = 'admin.users.index';
|
|
get(route($checkRoute))->assertRedirect(route('home'));
|
|
actingAs($this->adminUser);
|
|
get(route($checkRoute))->assertOk();
|
|
actingAs($this->nonAdminUser);
|
|
get(route($checkRoute))->assertRedirect(route('dashboard'));
|
|
});
|
|
|
|
it('has a new user link', function () {
|
|
// Arrange
|
|
actingAs($this->adminUser);
|
|
// Act & Assert
|
|
get(route('admin.users.index'))
|
|
->assertOk()
|
|
->assertSeeInOrder([
|
|
'href=',
|
|
route('admin.users.create'),
|
|
'New User',
|
|
'/a',
|
|
]);
|
|
});
|
|
|
|
it('shows user data', function () {
|
|
// Arrange
|
|
actingAs($this->adminUser);
|
|
// Act & Assert
|
|
$response = get(route('admin.users.index'));
|
|
$response->assertOk();
|
|
foreach ($this->users as $user) {
|
|
$response->assertSeeInOrder([
|
|
$user->full_name(true),
|
|
$user->school->name,
|
|
$user->email,
|
|
$user->cell_phone,
|
|
$user->judging_preference,
|
|
]);
|
|
}
|
|
});
|
|
|
|
it('has an edit link for each user', function () {
|
|
// Arrange
|
|
actingAs($this->adminUser);
|
|
// Act & Assert
|
|
$response = get(route('admin.users.index'));
|
|
$response->assertOk();
|
|
$response->assertSee(route('admin.users.edit', $this->adminUser));
|
|
$response->assertSee(route('admin.users.edit', $this->nonAdminUser));
|
|
$response->assertSee(route('admin.users.edit', $this->tabUser));
|
|
foreach ($this->users as $user) {
|
|
$response->assertSee(route('admin.users.edit', $user));
|
|
}
|
|
});
|