auditionadmin/tests/Feature/Pages/DashbaordTest.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');
});