示例#1
0
 public function test_add_company_multiple_reminder_schedules_with_repository()
 {
     $expireAt = '2016-03-30';
     $remindDays = [1, 2, 3];
     $remindAts = [1 => '2016-03-29', 2 => '2016-03-28', 3 => '2016-03-27'];
     //$this->assertInstanceOf('RuntimeException', new \Exception);
     $company = factory(Company::class)->create(['licence_expire_at' => $expireAt]);
     if (!isset($company->licence_expire_at)) {
         throw new \Exception("Licence Expiration Date must be set first!");
     }
     // remove reminders for Company One
     $scheduleRepository = new ScheduleRepository();
     $scheduleRepository->removeAllForObject($company);
     // add multiple actions to schedule
     // dates when to send reminders
     $lrc = new LicenceReminderCalculator();
     $runAts = $lrc->getReminderDates($company->licence_expire_at, $remindDays);
     $this->assertEquals($remindAts, $runAts);
     $action = ActionCommandSendReminderEmailCommand::class;
     $schedules = [];
     foreach ($runAts as $runAt) {
         $schedules[$runAt] = $scheduleRepository->add($runAt, $action, $company, []);
     }
     $this->assertCount(count($remindAts), $schedules);
     foreach ($schedules as $runAt => $schedule) {
         $this->seeInDatabase('schedules', ['run_at' => $runAt, 'id' => $schedule->id]);
     }
 }