toby/tests/Feature/VacationLimitTest.php
Adrian Hopek 474707e691 Merge branch 'main' into #43-vacation-summary-for-employee
# Conflicts:
#	app/Infrastructure/Http/Controllers/HolidayController.php
#	app/Infrastructure/Http/Controllers/VacationLimitController.php
#	app/Infrastructure/Http/Controllers/VacationRequestController.php
#	composer.lock
#	resources/js/Pages/Holidays/Index.vue
#	resources/js/Pages/VacationRequest/Create.vue
2022-03-02 10:44:07 +01:00

78 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Inertia\Testing\AssertableInertia as Assert;
use Tests\FeatureTestCase;
use Toby\Eloquent\Models\User;
use Toby\Eloquent\Models\VacationLimit;
class VacationLimitTest extends FeatureTestCase
{
use DatabaseMigrations;
public function testAdminCanSeeVacationLimits(): void
{
$admin = User::factory()->admin()->createQuietly();
User::factory(10)->create();
$this->actingAs($admin)
->get("/vacation-limits")
->assertOk()
->assertInertia(
fn(Assert $page) => $page
->component("VacationLimits")
->has("limits", 10),
);
}
public function testAdminCanUpdateVacationLimits(): void
{
$admin = User::factory()->admin()->createQuietly();
User::factory(3)->create();
[$limit1, $limit2, $limit3] = VacationLimit::all();
$data = [
[
"id" => $limit1->id,
"days" => 25,
],
[
"id" => $limit2->id,
"days" => null,
],
[
"id" => $limit3->id,
"days" => 20,
],
];
$this->actingAs($admin)
->put("/vacation-limits", [
"items" => $data,
])
->assertRedirect();
$this->assertDatabaseHas("vacation_limits", [
"id" => $limit1->id,
"days" => 25,
]);
$this->assertDatabaseHas("vacation_limits", [
"id" => $limit2->id,
"days" => null,
]);
$this->assertDatabaseHas("vacation_limits", [
"id" => $limit3->id,
"days" => 20,
]);
}
}