stateManager = $this->app->make(VacationRequestStateManager::class); $this->createCurrentYearPeriod(); } public function testAfterCreatingVacationRequestOfTypeVacationItTransitsToProperState(): void { $user = User::factory()->create(); $currentYearPeriod = YearPeriod::current(); /** @var VacationRequest $vacationRequest */ $vacationRequest = VacationRequest::factory([ "type" => VacationType::Vacation->value, "state" => Created::class, "from" => Carbon::create($currentYearPeriod->year, 2, 1)->toDateString(), "to" => Carbon::create($currentYearPeriod->year, 2, 4)->toDateString(), "comment" => "Comment for the vacation request.", ]) ->for($user) ->for($currentYearPeriod) ->create(); $this->stateManager->waitForTechnical($vacationRequest); $this->assertTrue($vacationRequest->state->equals(WaitingForTechnical::class)); } public function testAfterCreatingVacationRequestOfTypeSickVacationItTransitsToProperState(): void { $user = User::factory()->create(); $currentYearPeriod = YearPeriod::current(); /** @var VacationRequest $vacationRequest */ $vacationRequest = VacationRequest::factory([ "type" => VacationType::Sick->value, "state" => Created::class, "from" => Carbon::create($currentYearPeriod->year, 2, 1)->toDateString(), "to" => Carbon::create($currentYearPeriod->year, 2, 4)->toDateString(), ]) ->for($user) ->for($currentYearPeriod) ->create(); $this->stateManager->approve($vacationRequest); $this->assertTrue($vacationRequest->state->equals(Approved::class)); } public function testAfterCreatingVacationRequestOfTypeTimeInLieuItTransitsToProperState(): void { $user = User::factory()->create(); $currentYearPeriod = YearPeriod::current(); /** @var VacationRequest $vacationRequest */ $vacationRequest = VacationRequest::factory([ "type" => VacationType::TimeInLieu->value, "state" => Created::class, "from" => Carbon::create($currentYearPeriod->year, 2, 2)->toDateString(), "to" => Carbon::create($currentYearPeriod->year, 2, 2)->toDateString(), ]) ->for($user) ->for($currentYearPeriod) ->create(); $this->stateManager->approve($vacationRequest); $this->assertTrue($vacationRequest->state->equals(Approved::class)); } }