Files
piratepoet/mailpoet/tests/integration/Cron/Workers/BeamerTest.php
2024-01-22 12:11:47 +01:00

103 lines
4.0 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Test\Cron\Workers;
use Codeception\Stub;
use MailPoet\Cron\Workers\Beamer;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
class BeamerTest extends \MailPoetTest {
public function testItSetsLastAnnouncementDate() {
$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());
$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());
}
}