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(); }); });