get(route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-index'), ['approach_type' => ApproachTypeEnum::demarche->value()] )); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** @return void */ public function testGuestCannotAccessApproachsReadView(): void { $model = Approach::factory()->createOneQuietly(); $response = $this->get(route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-read'), $model->getKey() )); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** @return void */ public function testGuestCannotAccessApproachsCreateView(): void { $response = $this->get(route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-create'), ['approach_type' => ApproachTypeEnum::demarche->value()] )); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** @return void */ public function testGuestCannotAccessApproachsUpdateView(): void { $model = Approach::factory()->createOneQuietly(); $response = $this->get(route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-update'), $model->getKey() )); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** * TESTS GUEST CANNOT POST MODEL. */ /** @return void */ public function testGuestCannotCreateApproach(): void { $model = Approach::factory()->createOneQuietly(); $response = $this->post( route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.route.action-create'), $model->getKey() ), $model->toArray() ); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** @return void */ public function testGuestCannotUpdateApproach(): void { $model = Approach::factory()->createOneQuietly(); $response = $this->patch( route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.route.action-update'), $model->getKey() ), $model->toArray() ); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** @return void */ public function testGuestCannotDeleteApproach(): void { $model = Approach::factory()->createOneQuietly(); $response = $this->delete( route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.route.action-delete'), $model->getKey() ), $model->toArray() ); $response->assertRedirect(route(config('unit-tests.route.prefix') . 'login')); } /** * TESTS USER CONCEPTOR ACCESS VIEWS. */ /** @return void */ public function testUserConceptorCanAccessApproachsIndexView(): void { $authModel = AuthModel::factory()->createOneQuietly(); $authModel->update(['role' => RoleEnum::conceptor]); $response = $this->actingAs($authModel, 'backend')->get( route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-index'), ['approach_type' => ApproachTypeEnum::demarche->value()] ) ); $response->assertSuccessful(); $response->assertViewIs( config('unit-tests.view.prefix') . 'pages.approaches.' . config('unit-tests.view.resources-index') ); } /** @return void */ public function testUserConceptorCanAccessApproachsReadView(): void { $authModel = AuthModel::factory()->createOneQuietly(); $authModel->update(['role' => RoleEnum::conceptor]); $model = Approach::factory()->createOneQuietly(); $response = $this->actingAs($authModel, 'backend')->get( route(config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-read'), $model) ); $response->assertSuccessful(); $response->assertViewIs( config('unit-tests.view.prefix') . 'pages.approaches.' . config('unit-tests.view.resources-read') ); } /** @return void */ public function testUserConceptorCanAccessApproachsCreateView(): void { $authModel = AuthModel::factory()->createOneQuietly(); $authModel->update(['role' => RoleEnum::conceptor]); $response = $this->actingAs($authModel, 'backend')->get( route( config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-create'), ['approach_type' => ApproachTypeEnum::demarche->value()] ) ); $response->assertSuccessful(); $response->assertViewIs( config('unit-tests.view.prefix') . 'pages.approaches.' . config('unit-tests.view.resources-create') ); } /** @return void */ public function testUserConceptorCanAccessApproachsUpdateView(): void { $authModel = AuthModel::factory()->createOneQuietly(); $authModel->update(['role' => RoleEnum::conceptor]); $model = Approach::factory()->createOneQuietly(); $response = $this->actingAs($authModel, 'backend')->get( route(config('unit-tests.route.prefix') . 'approaches.' . config('unit-tests.view.resources-update'), $model) ); $response->assertSuccessful(); $response->assertViewIs( config('unit-tests.view.prefix') . 'pages.approaches.' . config('unit-tests.view.resources-update') ); } /** * TESTS CAN ACTIONS ON MODEL. */ /** @return void */ public function testCanCreateApproach(): void { $model = Approach::factory()->createOneQuietly(); $this->assertModelExists($model); } /** @return void */ public function testCanUpdateApproach(): void { $model = Approach::factory()->createOneQuietly(); $fieldTest = ""; foreach (config('unit-tests.list-fields') as $field) { if (Schema::hasColumn($model->getTable(), $field)) { $model->update([$field => "test"]); $fieldTest = $field; break; } } $this->assertTrue($model->wasChanged()); $this->assertTrue(array_key_exists($fieldTest, $model->getChanges())); $this->assertModelExists($model); } /** @return void */ public function testCanDeleteApproach(): void { $model = Approach::factory()->createOneQuietly(); $model->delete(); $this->assertModelMissing($model); } }