subDay(3); Option::set(Plugin\Manager::LAST_PLUGIN_DEACTIVATION_TIME_OPTION_PREFIX . 'ExamplePlugin', $time->getTimestamp()); $plugin = new Plugin('ExamplePlugin'); $plugin->schedulePluginReArchiving(); $date = $this->getDateFromReArchiveList(); $this->assertEquals($time->getDatetime(), $date); } public function test_schedulePluginReArchiving_shouldReArchiveFromLastCoreArchiveTimeIfEarlier() { $time = Date::today()->subDay(3); Option::set(Plugin\Manager::LAST_PLUGIN_DEACTIVATION_TIME_OPTION_PREFIX . 'ExamplePlugin', $time->getTimestamp()); $cronTime = Date::today()->subDay(5); Option::set(CronArchive::OPTION_ARCHIVING_FINISHED_TS, $cronTime->getTimestamp()); $plugin = new Plugin('ExamplePlugin'); $plugin->schedulePluginReArchiving(); $date = $this->getDateFromReArchiveList(); $this->assertEquals($cronTime->getDatetime(), $date); } public function test_schedulePluginReArchiving_shouldReArchiveFromLastCoreArchiveTimeIfNoDeactivation() { $cronTime = Date::today()->subDay(5); Option::set(CronArchive::OPTION_ARCHIVING_FINISHED_TS, $cronTime->getTimestamp()); $plugin = new Plugin('ExamplePlugin'); $plugin->schedulePluginReArchiving(); $date = $this->getDateFromReArchiveList(); $this->assertNull($date); } public function test_schedulePluginReArchiving_shouldReArchiveFromNMonthsAgo_IfNoDecativationTimeOrCronTimeExists() { $plugin = new Plugin('ExamplePlugin'); $plugin->schedulePluginReArchiving(); $date = $this->getDateFromReArchiveList(); $this->assertNull($date); } private function getDateFromReArchiveList() { $list = new ReArchiveList(); $items = $list->getAll(); $item = reset($items); $item = json_decode($item, $assocc = true); if (empty($item['startDate'])) { return null; } $date = $item['startDate']; return Date::factory($date)->getDatetime(); } }