set('last_announcement_date', Carbon::createFromTimeString($oldDate)->getTimestamp()); $wp = Stub::make(new WPFunctions, [ 'wpRemoteGet' => null, 'wpRemoteRetrieveBody' => json_encode([ ['date' => $newDate], ]), ]); $beamer = new Beamer($settings, $wp); $done = $beamer->setLastAnnouncementDate(); verify($done)->equals(true); verify($settings->get('last_announcement_date'))->equals(Carbon::createFromTimeString($newDate)->getTimestamp()); } public function testItDoesNothingIfNoResponse() { $oldDate = '2019-05-18T10:25:00.000Z'; $settings = SettingsController::getInstance(); $settings->set('last_announcement_date', Carbon::createFromTimeString($oldDate)->getTimestamp()); $wp = Stub::make(new WPFunctions, [ 'wpRemoteGet' => null, 'wpRemoteRetrieveBody' => null, ]); $beamer = new Beamer($settings, $wp); $done = $beamer->setLastAnnouncementDate(); verify($done)->equals(false); verify($settings->get('last_announcement_date'))->equals(Carbon::createFromTimeString($oldDate)->getTimestamp()); } public function testItDoesNothingIfWrongResponse() { $oldDate = '2019-05-18T10:25:00.000Z'; $settings = SettingsController::getInstance(); $settings->set('last_announcement_date', Carbon::createFromTimeString($oldDate)->getTimestamp()); $wp = Stub::make(new WPFunctions, [ 'wpRemoteGet' => null, 'wpRemoteRetrieveBody' => '[{"corrupted":"json data', ]); $beamer = new Beamer($settings, $wp); $done = $beamer->setLastAnnouncementDate(); verify($done)->equals(false); verify($settings->get('last_announcement_date'))->equals(Carbon::createFromTimeString($oldDate)->getTimestamp()); } public function testItDoesNothingIfEmptyList() { $oldDate = '2019-05-18T10:25:00.000Z'; $settings = SettingsController::getInstance(); $settings->set('last_announcement_date', Carbon::createFromTimeString($oldDate)->getTimestamp()); $wp = Stub::make(new WPFunctions, [ 'wpRemoteGet' => null, 'wpRemoteRetrieveBody' => '[]', ]); $beamer = new Beamer($settings, $wp); $done = $beamer->setLastAnnouncementDate(); verify($done)->equals(false); verify($settings->get('last_announcement_date'))->equals(Carbon::createFromTimeString($oldDate)->getTimestamp()); } public function testItDoesNotRunWhenBeamerIsDisabled() { $settings = SettingsController::getInstance(); $settings->set('3rd_party_libs.enabled', '0'); $wp = Stub::make(new WPFunctions, []); $beamer = new Beamer($settings, $wp); $task = Stub::make(new \MailPoet\Entities\ScheduledTaskEntity, []); $timer = 0; $done = $beamer->processTaskStrategy($task, $timer); verify($done)->equals(false); } public function testItDoesRunWhenBeamerIsEnabled() { $oldDate = '2019-05-18T10:25:00.000Z'; $newDate = '2019-05-22T10:25:00.000Z'; $settings = SettingsController::getInstance(); $settings->set('last_announcement_date', Carbon::createFromTimeString($oldDate)->getTimestamp()); $settings->set('3rd_party_libs.enabled', '1'); $wp = Stub::make(new WPFunctions, [ 'wpRemoteGet' => null, 'wpRemoteRetrieveBody' => json_encode([ ['date' => $newDate], ]), ]); $beamer = new Beamer($settings, $wp); $task = Stub::make(new \MailPoet\Entities\ScheduledTaskEntity, []); $timer = 0; $done = $beamer->processTaskStrategy($task, $timer); verify($done)->equals(true); verify($settings->get('last_announcement_date'))->equals(Carbon::createFromTimeString($newDate)->getTimestamp()); } }