diff --git a/tests/Feature/ReceptionScreenTest.php b/tests/Feature/ReceptionScreenTest.php new file mode 100644 index 0000000..945baec --- /dev/null +++ b/tests/Feature/ReceptionScreenTest.php @@ -0,0 +1,131 @@ +user = User::factory()->make()->only([ + 'name', + 'email', + 'password' + ]); + $this->adminUser = User::factory()->create([ + 'name' => 'admin', + 'email' => 'test@example.com', + 'password' => 123456 + ]); + $this->noAdminUser = User::factory()->create([ + 'name' => 'noadmin', + 'email' => 'notest@example.com', + 'password' => 'no123456' + ]); + } + public function testUsersPage(): void + { + $response = $this->actingAs($this->adminUser) + ->withSession(['banned' => false]) + ->get(route('users.index')); + + $response->assertOk(); + } + + public function testNoAdminNoSeeUsersPage(): void + { + $response = $this->actingAs($this->noAdminUser) + ->withSession(['banned' => false]) + ->get(route('users.index')); + + $response->assertStatus(403); + } + + public function testCreateUserPage(): void + { + $response = $this->actingAs($this->adminUser) + ->withSession(['banned' => false]) + ->get(route('users.create')); + + $response->assertOk(); + } + public function testNoAdminCreateUserPage(): void + { + $response = $this->actingAs($this->noAdminUser) + ->withSession(['banned' => false]) + ->get(route('users.create')); + + $response->assertStatus(403); + } + + public function testStoreUser(): void + { + $response = $this->actingAs($this->adminUser) + ->withSession(['banned' => false]) + ->post(route('users.store', $this->user)); + + $response->assertRedirect(route('users.index')); + + $this->assertDatabaseHas('users', $this->user); + } + + public function testNoAdminNoStoreUser(): void + { + $response = $this->actingAs($this->noAdminUser) + ->withSession(['banned' => false]) + ->post(route('users.store', $this->user)); + + $response->assertStatus(403); + + $this->assertDatabaseMissing('users', $this->user); + } + + public function testEditUserPage(): void + { + $response = $this->actingAs($this->adminUser) + ->withSession(['banned' => false]) + ->get(route('users.edit', $this->adminUser)); + + $response->assertOk(); + } + public function testNoAdminEditUserPage(): void + { + $response = $this->actingAs($this->noAdminUser) + ->withSession(['banned' => false]) + ->get(route('users.edit', $this->noAdminUser)); + + $response->assertStatus(403); + } + + public function testUpdateUser(): void + { + $response = $this->actingAs($this->adminUser) + ->withSession(['banned' => false]) + ->patch(route('users.update', $this->noAdminUser), $this->user); + + $response->assertRedirect(route('users.index')); + + $dataWithOutHashPassword = $this->user; + unset($dataWithOutHashPassword['password']); + $this->assertDatabaseHas('users', $dataWithOutHashPassword); + } + + public function testNoAdminNoUpdateUser(): void + { + $response = $this->actingAs($this->noAdminUser) + ->withSession(['banned' => false]) + ->patch(route('users.update', $this->noAdminUser), $this->user); + + $response->assertStatus(403); + + $noAdminData = $this->noAdminUser->only(['name', 'email', 'password']); + $this->assertDatabaseHas('users', $noAdminData); + $this->assertDatabaseMissing('users', $this->user); + } +}