62 lines
2.1 KiB
PHP
62 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Models\Room;
|
|
use App\Models\User;
|
|
use App\Settings;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use function Pest\Laravel\actingAs;
|
|
use function Pest\Laravel\get;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('only shows the judging option when a user is assigned to judge and judging is enabled', function () {
|
|
// Arrange
|
|
$room = Room::factory()->create();
|
|
$noJudgeUser = User::factory()->create();
|
|
$judgeUser = User::factory()->create();
|
|
$adminNoJudgeUser = User::factory()->admin()->create();
|
|
$room->judges()->attach($judgeUser);
|
|
|
|
Settings::set('judging_enabled', false);
|
|
actingAs($noJudgeUser);
|
|
get(route('dashboard'))->assertDontSee('Judging');
|
|
actingAs($judgeUser);
|
|
get(route('dashboard'))->assertDontSee('Judging');
|
|
actingAs($adminNoJudgeUser);
|
|
get(route('dashboard'))->assertDontSee('Judging');
|
|
|
|
Settings::set('judging_enabled', true);
|
|
actingAs($noJudgeUser);
|
|
get(route('dashboard'))->assertDontSee('Judging');
|
|
actingAs($judgeUser);
|
|
get(route('dashboard'))->assertSee('Judging');
|
|
actingAs($adminNoJudgeUser);
|
|
get(route('dashboard'))->assertDontSee('Judging');
|
|
});
|
|
|
|
it('only shows Administration and Setup menus when the user is an administrator', function () {
|
|
// Arrange
|
|
$adminUser = User::factory()->admin()->create();
|
|
$nonAdminUser = User::factory()->create();
|
|
|
|
actingAs($adminUser);
|
|
get(route('dashboard'))->assertSee('Administration')->assertSee('Setup');
|
|
actingAs($nonAdminUser);
|
|
get(route('dashboard'))->assertDontSee('Administration')->assertDontSee('Setup');
|
|
});
|
|
|
|
it('only shows the Tabulation dropdown to tabulators and administrators', function () {
|
|
// Arrange
|
|
$adminUser = User::factory()->admin()->create();
|
|
$tabUser = User::factory()->tab()->create();
|
|
$normalUser = User::factory()->create();
|
|
// Act & Assert
|
|
actingAs($adminUser);
|
|
get(route('dashboard'))->assertSee('Tabulation');
|
|
actingAs($tabUser);
|
|
get(route('dashboard'))->assertSee('Tabulation');
|
|
actingAs($normalUser);
|
|
get(route('dashboard'))->assertDontSee('Tabulation');
|
|
|
|
});
|