53 lines
2.1 KiB
PHP
53 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
describe('AssignMonitorController::index', function () {
|
|
it('denies access to a non-admin user', function () {
|
|
$this->get(route('admin.assign_monitors.index'))->assertRedirect(route('home'));
|
|
actAsNormal();
|
|
$this->get(route('admin.assign_monitors.index'))->assertRedirect(route('dashboard'));
|
|
actAsTab();
|
|
$this->get(route('admin.assign_monitors.index'))->assertRedirect(route('dashboard'));
|
|
});
|
|
it('shows the assign monitors page', function () {
|
|
$users = User::factory()->count(5)->create();
|
|
actAsAdmin();
|
|
$response = $this->get(route('admin.assign_monitors.index'))->assertOk();
|
|
foreach (User::all() as $user) {
|
|
$response->assertSee($user->full_name(true));
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('AssignMonitorController::store', function () {
|
|
it('denies access to a non-admin user', function () {
|
|
$this->post(route('admin.assign_monitors.store'))->assertRedirect(route('home'));
|
|
actAsNormal();
|
|
$this->post(route('admin.assign_monitors.store'))->assertRedirect(route('dashboard'));
|
|
actAsTab();
|
|
$this->post(route('admin.assign_monitors.store'))->assertRedirect(route('dashboard'));
|
|
});
|
|
it('assigns monitor privileges to a user', function () {
|
|
$toBeMonitor = User::factory()->create();
|
|
$notToBeMonitor = User::factory()->create();
|
|
$alsoAmonitor = User::factory()->create();
|
|
actAsAdmin();
|
|
$this->post(route('admin.assign_monitors.store'), [
|
|
'user' => [
|
|
$toBeMonitor->id => 'on',
|
|
$alsoAmonitor->id => 'on',
|
|
],
|
|
])->assertRedirect(route('admin.assign_monitors.index'))->assertSessionHas('success', 'Monitors assigned');
|
|
$toBeMonitor->refresh();
|
|
$notToBeMonitor->refresh();
|
|
$alsoAmonitor->refresh();
|
|
expect($toBeMonitor->hasFlag('monitor'))->toBeTrue();
|
|
expect($notToBeMonitor->hasFlag('monitor'))->toBeFalse();
|
|
expect($alsoAmonitor->hasFlag('monitor'))->toBeTrue();
|
|
});
|
|
});
|