227 lines
7.6 KiB
PHP
227 lines
7.6 KiB
PHP
<?php
|
|
|
|
namespace Tests\Back;
|
|
|
|
use App\Enums\Approaches\ApproachTypeEnum;
|
|
use App\Enums\Users\RoleEnum;
|
|
use App\Models\Approach;
|
|
use App\Models\User as AuthModel;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Tests\TestCase;
|
|
|
|
class ApproachLabelTest extends TestCase
|
|
{
|
|
/**
|
|
* TESTS GUEST CANNOT ACCESS VIEWS.
|
|
*/
|
|
|
|
/** @return void */
|
|
public function testGuestCannotAccessApproachsIndexView(): void
|
|
{
|
|
$response = $this->get(route(
|
|
config('unit-tests.route.prefix') .
|
|
'approaches.' .
|
|
config('unit-tests.view.resources-index'),
|
|
['approach_type' => ApproachTypeEnum::label->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::label->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::label->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::label->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);
|
|
}
|
|
}
|