57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
|
|
|
use App\Models\School;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
use function Pest\Laravel\get;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('only shows Students and Entries menu options if the user has a school', function () {
|
|
// Act & Assert
|
|
$user = User::factory()->create();
|
|
$this->actingAs($user);
|
|
get(route('dashboard'))
|
|
->assertStatus(200)
|
|
->assertSeeText('Dashboard')
|
|
->assertDontSeeText('Students')
|
|
->assertDontSeeText('Entries');
|
|
|
|
$school = School::factory()->create();
|
|
$user->school_id = $school->id;
|
|
$user->save();
|
|
get(route('dashboard'))
|
|
->assertStatus(200)
|
|
->assertSeeText('My School')
|
|
->assertSeeText('Dashboard')
|
|
->assertSeeText('Students')
|
|
->assertSeeText('Entries');
|
|
});
|
|
|
|
it('only shows Admin menu if an administrator only shows Tabulation if admin or tabulator', function () {
|
|
// Arrange
|
|
$user = User::factory()->create();
|
|
$adminUser = User::factory()->admin()->create();
|
|
$tabUser = User::factory()->tab()->create();
|
|
|
|
// Act & Assert
|
|
$this->actingAs($user);
|
|
get(route('dashboard'))
|
|
->assertStatus(200)
|
|
->assertDontSeeText('Administration');
|
|
|
|
$this->actingAs($adminUser);
|
|
get(route('dashboard'))
|
|
->assertStatus(200)
|
|
->assertSeeText('Administration')
|
|
->assertSeeText('Tabulation');
|
|
|
|
$this->actingAs($tabUser);
|
|
get(route('dashboard'))
|
|
->assertStatus(200)
|
|
->assertDontSeeText('Administration')
|
|
->assertSeeText('Tabulation');
|
|
|
|
});
|