diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 0788740..aad2d61 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -73,29 +73,29 @@ class DatabaseSeeder extends Seeder $yearPeriods = YearPeriod::all(); - foreach ($users as $user) { - VacationRequest::factory() - ->count(10) - ->for($user) - ->sequence(fn() => [ - "year_period_id" => $yearPeriods->random()->id, - ]) - ->afterCreating(function (VacationRequest $vacationRequest): void { - $days = app(VacationDaysCalculator::class)->calculateDays( - $vacationRequest->yearPeriod, - $vacationRequest->from, - $vacationRequest->to, - ); - - foreach ($days as $day) { - $vacationRequest->vacations()->create([ - "date" => $day, - "user_id" => $vacationRequest->user->id, - ]); - } - }) - ->create(); - } +// foreach ($users as $user) { +// VacationRequest::factory() +// ->count(10) +// ->for($user) +// ->sequence(fn() => [ +// "year_period_id" => $yearPeriods->random()->id, +// ]) +// ->afterCreating(function (VacationRequest $vacationRequest): void { +// $days = app(VacationDaysCalculator::class)->calculateDays( +// $vacationRequest->yearPeriod, +// $vacationRequest->from, +// $vacationRequest->to, +// ); +// +// foreach ($days as $day) { +// $vacationRequest->vacations()->create([ +// "date" => $day, +// "user_id" => $vacationRequest->user->id, +// ]); +// } +// }) +// ->create(); +// } } protected function generateAvatarsForUsers(Collection $users): void diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index 58a15ea..6511e6b 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -62,7 +62,7 @@ v-for="day in calendar" :key="day.dayOfMonth" class="border border-gray-300 text-lg font-semibold text-gray-900 py-4 px-2" - :class="{ 'bg-blumilk-500 text-white': day.isToday}" + :class="{ 'text-blumilk-600 bg-blumilk-25 font-black': day.isToday}" >
{{ day.dayOfMonth }} @@ -98,7 +98,7 @@ v-for="day in calendar" :key="day.dayOfMonth" class="border border-gray-300" - :class="{'bg-gray-100': day.isWeekend, 'bg-green-100': day.isHoliday, 'bg-blumilk-200': userVacation.vacations.includes(day.date) }" + :class="{'bg-gray-100': day.isWeekend, 'bg-green-100': day.isHoliday, 'bg-blumilk-500': userVacation.vacations.includes(day.date) }" >
polishHolidaysRetriever = $this->app->make(PolishHolidaysRetriever::class); + } + public function testUserCanSeeVacationRequestsList(): void { $user = User::factory()->createQuietly(); @@ -35,7 +50,9 @@ class VacationRequestTest extends FeatureTestCase public function testUserCanCreateVacationRequest(): void { $user = User::factory()->createQuietly(); + $currentYearPeriod = YearPeriod::current(); + $this->actingAs($user) ->post("/vacation-requests", [ "type" => VacationType::VACATION->value, @@ -83,7 +100,9 @@ class VacationRequestTest extends FeatureTestCase $currentYearPeriod = YearPeriod::current(); - $vacationRequest = VacationRequest::factory(["state" => VacationRequestState::WAITING_FOR_ADMINISTRATIVE]) + $vacationRequest = VacationRequest::factory([ + "state" => VacationRequestState::WAITING_FOR_ADMINISTRATIVE, + ]) ->for($user) ->for($currentYearPeriod) ->create(); @@ -116,6 +135,48 @@ class VacationRequestTest extends FeatureTestCase "state" => VacationRequestState::REJECTED, ]); } + + public function testUserCannotCreateVacationRequestAtWeekend(): void + { + $user = User::factory()->createQuietly(); + $currentYearPeriod = YearPeriod::current(); + + $this->actingAs($user) + ->post("/vacation-requests", [ + "type" => VacationType::VACATION->value, + "from" => Carbon::create($currentYearPeriod->year, 2, 5)->toDateString(), + "to" => Carbon::create($currentYearPeriod->year, 2, 6)->toDateString(), + "comment" => "Vacation at weekend.", + ]) + ->assertSessionHasErrors([ + "vacationRequest" => trans("Vacation needs minimum one day."), + ]); + } + + public function testUserCannotCreateVacationRequestAtHoliday(): void + { + $user = User::factory()->createQuietly(); + $currentYearPeriod = YearPeriod::current(); + + foreach ($this->polishHolidaysRetriever->getForYearPeriod($currentYearPeriod) as $holiday) { + $currentYearPeriod->holidays()->create([ + "name" => $holiday["name"], + "date" => $holiday["date"], + ]); + } + + $this->actingAs($user) + ->post("/vacation-requests", [ + "type" => VacationType::VACATION->value, + "from" => Carbon::create($currentYearPeriod->year, 4, 18)->toDateString(), + "to" => Carbon::create($currentYearPeriod->year, 4, 18)->toDateString(), + "comment" => "Vacation at holiday.", + ]) + ->assertSessionHasErrors([ + "vacationRequest" => trans("Vacation needs minimum one day."), + ]); + } + public function testUserCannotCreateVacationRequestIfHeHasPendingVacationRequestInThisRange(): void { $user = User::factory()->createQuietly(); @@ -201,4 +262,4 @@ class VacationRequestTest extends FeatureTestCase "vacationRequest" => trans("The vacation request cannot be created at the turn of the year."), ]); } -} \ No newline at end of file +} diff --git a/tests/FeatureTestCase.php b/tests/FeatureTestCase.php index de0d193..084d811 100644 --- a/tests/FeatureTestCase.php +++ b/tests/FeatureTestCase.php @@ -17,7 +17,7 @@ abstract class FeatureTestCase extends BaseTestCase { parent::setUp(); - Carbon::setTestNow(Carbon::now()); + Carbon::setTestNow(Carbon::createFromDate(2022, 1, 1)); $this->createCurrentYearPeriod(); } } diff --git a/tests/Unit/VacationRequestStatesTest.php b/tests/Unit/VacationRequestStatesTest.php index 69cec4b..02479c7 100644 --- a/tests/Unit/VacationRequestStatesTest.php +++ b/tests/Unit/VacationRequestStatesTest.php @@ -1,5 +1,7 @@ assertEquals(VacationRequestState::APPROVED, $vacationRequest->state); } -} \ No newline at end of file +}