Add test
This commit is contained in:
committed by
M. Shull
parent
d980f9e3f4
commit
ac54e198bf
@ -553,7 +553,7 @@ class Populator {
|
||||
|
||||
private function initLastAnnouncementDate() {
|
||||
if (!$this->settings->get('last_announcement_date')) {
|
||||
$beamer = new Beamer($this->settings);
|
||||
$beamer = new Beamer($this->settings, WPFunctions::get());
|
||||
$beamer->setLastAnnouncementDate();
|
||||
}
|
||||
}
|
||||
|
@ -6,20 +6,24 @@ use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Cron\Workers\SimpleWorker;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use function GuzzleHttp\json_decode;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
class Beamer extends SimpleWorker {
|
||||
const TASK_TYPE = 'beamer';
|
||||
const API_URL = 'https://api.getbeamer.com/v0';
|
||||
const API_KEY = 'b_neUUX8kIYVEYZqQzSnwhmVggVLA6lT+GzDQOW7hrP38=';
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
function __construct(SettingsController $settings, $timer = false) {
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
function __construct(SettingsController $settings, WPFunctions $wp, $timer = false) {
|
||||
parent::__construct($timer);
|
||||
$this->settings = $settings;
|
||||
$this->wp = $wp;
|
||||
}
|
||||
|
||||
function processTaskStrategy(ScheduledTask $task) {
|
||||
@ -27,13 +31,12 @@ class Beamer extends SimpleWorker {
|
||||
}
|
||||
|
||||
function setLastAnnouncementDate() {
|
||||
$wp = new WPFunctions();
|
||||
$response = $wp->wpRemoteGet('https://api.getbeamer.com/v0/posts?published=true&maxResults=1', [
|
||||
$response = $this->wp->wpRemoteGet(self::API_URL . '/posts?published=true&maxResults=1', [
|
||||
'headers' => [
|
||||
'Beamer-Api-Key' => self::API_KEY,
|
||||
],
|
||||
]);
|
||||
$posts = $wp->wpRemoteRetrieveBody($response);
|
||||
$posts = $this->wp->wpRemoteRetrieveBody($response);
|
||||
if (empty($posts)) return false;
|
||||
$posts = json_decode($posts);
|
||||
$this->settings->set('last_announcement_date', Carbon::createFromTimeString($posts[0]->date)->getTimestamp());
|
||||
@ -41,7 +44,7 @@ class Beamer extends SimpleWorker {
|
||||
}
|
||||
|
||||
static function getNextRunDate() {
|
||||
$wp = new WPFunctions();
|
||||
$wp = new WPFunctions;
|
||||
$date = Carbon::createFromTimestamp($wp->currentTime('timestamp'));
|
||||
return $date->hour(11)->minute(00)->second(00)->addDay();
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\InactiveSubscribersController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class WorkersFactory {
|
||||
|
||||
@ -137,7 +138,7 @@ class WorkersFactory {
|
||||
|
||||
/** @return Beamer */
|
||||
function createBeamerkWorker($timer) {
|
||||
return new Beamer($this->settings, $timer);
|
||||
return new Beamer($this->settings, WPFunctions::get(), $timer);
|
||||
}
|
||||
|
||||
/** @return InactiveSubscribers */
|
||||
|
@ -266,6 +266,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest {
|
||||
'createInactiveSubscribersWorker' => $worker,
|
||||
'createAuthorizedSendingEmailsCheckWorker' => $worker,
|
||||
'createWooCommerceOrdersWorker' => $worker,
|
||||
'createBeamerkWorker' => $worker,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -46,6 +46,8 @@ class DaemonTest extends \MailPoetTest {
|
||||
'createInactiveSubscribersWorker' => $this->createSimpleWorkerMock(),
|
||||
'createAuthorizedSendingEmailsCheckWorker' => $this->createSimpleWorkerMock(),
|
||||
'createWooCommerceOrdersWorker' => $this->createSimpleWorkerMock(),
|
||||
'createBeamerkWorker' => $this->createSimpleWorkerMock(),
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Migration as MigrationWorker;
|
||||
use MailPoet\Cron\Workers\Bounce as BounceWorker;
|
||||
use MailPoet\Cron\Workers\Beamer;
|
||||
|
||||
class WordPressTest extends \MailPoetTest {
|
||||
|
||||
@ -30,6 +31,7 @@ class WordPressTest extends \MailPoetTest {
|
||||
$this->settings->set('cron_trigger', [
|
||||
'method' => 'none',
|
||||
]);
|
||||
$this->_addScheduledTask(Beamer::TASK_TYPE, ScheduledTask::STATUS_SCHEDULED, Carbon::createFromTimestamp(current_time('timestamp') + 600));
|
||||
}
|
||||
|
||||
function testItRequiresScheduledQueuesToExecute() {
|
||||
@ -85,6 +87,12 @@ class WordPressTest extends \MailPoetTest {
|
||||
expect(WordPress::checkExecutionRequirements())->true();
|
||||
}
|
||||
|
||||
function testItExecutesWhenBeamerTaskIsDue() {
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
$this->_addScheduledTask(Beamer::TASK_TYPE, $status = ScheduledTask::STATUS_SCHEDULED);
|
||||
expect(WordPress::checkExecutionRequirements())->true();
|
||||
}
|
||||
|
||||
function testItDoesNotExecuteWhenMigrationIsCompleted() {
|
||||
$this->_enableMigration();
|
||||
$this->_addScheduledTask(MigrationWorker::TASK_TYPE, $status = ScheduledTask::STATUS_COMPLETED);
|
||||
@ -162,15 +170,16 @@ class WordPressTest extends \MailPoetTest {
|
||||
return $queue->save();
|
||||
}
|
||||
|
||||
function _addScheduledTask($type, $status) {
|
||||
function _addScheduledTask($type, $status, $scheduled_at = null) {
|
||||
if (!$scheduled_at && $status === ScheduledTask::STATUS_SCHEDULED) {
|
||||
$scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
}
|
||||
$task = ScheduledTask::create();
|
||||
$task->hydrate(
|
||||
[
|
||||
'type' => $type,
|
||||
'status' => $status,
|
||||
'scheduled_at' => ($status === ScheduledTask::STATUS_SCHEDULED) ?
|
||||
Carbon::createFromTimestamp(current_time('timestamp')) :
|
||||
null,
|
||||
'scheduled_at' => $scheduled_at,
|
||||
]
|
||||
);
|
||||
return $task->save();
|
||||
|
26
tests/integration/Cron/Workers/BeamerTest.php
Normal file
26
tests/integration/Cron/Workers/BeamerTest.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace MailPoet\Test\Cron\Workers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Cron\Workers\Beamer;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class BeamerTest extends \MailPoetTest {
|
||||
function testItSetsLastAnnouncementDate() {
|
||||
$oldDate = '2019-05-18T10:25:00.000Z';
|
||||
$newDate = '2019-05-22T10:25:00.000Z';
|
||||
$settings = new SettingsController;
|
||||
$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);
|
||||
$beamer->setLastAnnouncementDate();
|
||||
expect($settings->get('last_announcement_date'))->equals( Carbon::createFromTimeString($newDate)->getTimestamp());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user