createCurrentYearPeriod(); } public function testSummariesAreSentOnlyToProperApprovers(): void { $currentYearPeriod = YearPeriod::current(); $user = User::factory([ "role" => Role::Employee, ])->create(); $technicalApprover = User::factory([ "role" => Role::TechnicalApprover, ])->create(); $administrativeApprover = User::factory([ "role" => Role::AdministrativeApprover, ])->create(); $admin = User::factory([ "role" => Role::Administrator, ])->create(); VacationRequest::factory() ->for($user) ->for($currentYearPeriod) ->create(["state" => WaitingForTechnical::class]); $this->artisan(SendVacationRequestSummariesToApprovers::class) ->execute(); Notification::assertSentTo([$technicalApprover, $admin], VacationRequestsSummaryNotification::class); Notification::assertNotSentTo([$user, $administrativeApprover], VacationRequestsSummaryNotification::class); } public function testSummariesAreSentOnlyIfVacationRequestWaitingForActionExists(): void { $currentYearPeriod = YearPeriod::current(); $user = User::factory([ "role" => Role::Employee, ])->create(); $technicalApprover = User::factory([ "role" => Role::TechnicalApprover, ])->create(); $admin = User::factory([ "role" => Role::Administrator, ])->create(); VacationRequest::factory() ->for($user) ->for($currentYearPeriod) ->create(["state" => WaitingForTechnical::class]); $this->artisan(SendVacationRequestSummariesToApprovers::class) ->execute(); Notification::assertSentTo([$technicalApprover, $admin], VacationRequestsSummaryNotification::class); Notification::assertNotSentTo([$user], VacationRequestsSummaryNotification::class); } public function testSummariesAreNotSentIfThereAreNoWaitingForActionVacationRequests(): void { $currentYearPeriod = YearPeriod::current(); $user = User::factory([ "role" => Role::Employee, ])->create(); $technicalApprover = User::factory([ "role" => Role::TechnicalApprover, ])->create(); $admin = User::factory([ "role" => Role::Administrator, ])->create(); VacationRequest::factory() ->for($user) ->for($currentYearPeriod) ->create(["state" => Approved::class]); VacationRequest::factory() ->for($user) ->for($currentYearPeriod) ->create(["state" => Cancelled::class]); VacationRequest::factory() ->for($user) ->for($currentYearPeriod) ->create(["state" => Rejected::class]); VacationRequest::factory() ->for($user) ->for($currentYearPeriod) ->create(["state" => Created::class]); $this->artisan(SendVacationRequestSummariesToApprovers::class) ->execute(); Notification::assertNotSentTo([$user, $technicalApprover, $admin], VacationRequestsSummaryNotification::class); } }