Add tests [MAILPOET-940]
This commit is contained in:
@ -21,7 +21,7 @@ class ScheduledTaskSubscriber extends Model {
|
|||||||
|
|
||||||
$task_subscriber->task_id = $data['task_id'];
|
$task_subscriber->task_id = $data['task_id'];
|
||||||
$task_subscriber->subscriber_id = $data['subscriber_id'];
|
$task_subscriber->subscriber_id = $data['subscriber_id'];
|
||||||
$task_subscriber->processed = self::STATUS_TO_PROCESS;
|
$task_subscriber->processed = !empty($data['processed']) ? self::STATUS_PROCESSED : self::STATUS_TO_PROCESS;
|
||||||
$task_subscriber->save();
|
$task_subscriber->save();
|
||||||
|
|
||||||
return $task_subscriber;
|
return $task_subscriber;
|
||||||
|
75
tests/unit/Models/ScheduledTaskSubscriberTest.php
Normal file
75
tests/unit/Models/ScheduledTaskSubscriberTest.php
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
namespace MailPoet\Test\Models;
|
||||||
|
|
||||||
|
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||||
|
|
||||||
|
class ScheduledTaskSubscriberTest extends \MailPoetTest {
|
||||||
|
function _before() {
|
||||||
|
$this->task_id = 123;
|
||||||
|
$this->subscriber_id = 456;
|
||||||
|
$this->task_subscriber = ScheduledTaskSubscriber::createOrUpdate(array(
|
||||||
|
'task_id' => $this->task_id,
|
||||||
|
'subscriber_id' => $this->subscriber_id
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanBeCreated() {
|
||||||
|
expect($this->task_subscriber->task_id)->equals($this->task_id);
|
||||||
|
expect($this->task_subscriber->subscriber_id)->equals($this->subscriber_id);
|
||||||
|
expect($this->task_subscriber->processed)->equals(ScheduledTaskSubscriber::STATUS_TO_PROCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanBeUpdated() {
|
||||||
|
$task_subscriber = ScheduledTaskSubscriber::createOrUpdate(array(
|
||||||
|
'task_id' => $this->task_id,
|
||||||
|
'subscriber_id' => $this->subscriber_id,
|
||||||
|
'processed' => ScheduledTaskSubscriber::STATUS_PROCESSED
|
||||||
|
));
|
||||||
|
expect($task_subscriber->processed)->equals(ScheduledTaskSubscriber::STATUS_PROCESSED);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanAddMultipleSubscribers() {
|
||||||
|
ScheduledTaskSubscriber::deleteMany();
|
||||||
|
$subscriber_ids = array(321, 654, 987);
|
||||||
|
ScheduledTaskSubscriber::addSubscribers($this->task_id, $subscriber_ids);
|
||||||
|
$task_subscribers = ScheduledTaskSubscriber::where('task_id', $this->task_id)
|
||||||
|
->orderByAsc('subscriber_id')
|
||||||
|
->findMany();
|
||||||
|
expect(count($task_subscribers))->equals(count($subscriber_ids));
|
||||||
|
expect($task_subscribers[0]->subscriber_id)->equals($subscriber_ids[0]);
|
||||||
|
expect($task_subscribers[1]->subscriber_id)->equals($subscriber_ids[1]);
|
||||||
|
expect($task_subscribers[2]->subscriber_id)->equals($subscriber_ids[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanGetToProcessCount() {
|
||||||
|
$count = ScheduledTaskSubscriber::getToProcessCount($this->task_id);
|
||||||
|
expect($count)->equals(1);
|
||||||
|
$this->task_subscriber->processed = ScheduledTaskSubscriber::STATUS_PROCESSED;
|
||||||
|
$this->task_subscriber->save();
|
||||||
|
$count = ScheduledTaskSubscriber::getToProcessCount($this->task_id);
|
||||||
|
expect($count)->equals(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanGetProcessedCount() {
|
||||||
|
$count = ScheduledTaskSubscriber::getProcessedCount($this->task_id);
|
||||||
|
expect($count)->equals(0);
|
||||||
|
$this->task_subscriber->processed = ScheduledTaskSubscriber::STATUS_PROCESSED;
|
||||||
|
$this->task_subscriber->save();
|
||||||
|
$count = ScheduledTaskSubscriber::getProcessedCount($this->task_id);
|
||||||
|
expect($count)->equals(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanGetTotalCount() {
|
||||||
|
ScheduledTaskSubscriber::createOrUpdate(array(
|
||||||
|
'task_id' => $this->task_id,
|
||||||
|
'subscriber_id' => 555,
|
||||||
|
'processed' => ScheduledTaskSubscriber::STATUS_PROCESSED
|
||||||
|
));
|
||||||
|
$count = ScheduledTaskSubscriber::getTotalCount($this->task_id);
|
||||||
|
expect($count)->equals(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||||
|
}
|
||||||
|
}
|
27
tests/unit/Models/ScheduledTaskTest.php
Normal file
27
tests/unit/Models/ScheduledTaskTest.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
namespace MailPoet\Test\Models;
|
||||||
|
|
||||||
|
use MailPoet\Models\ScheduledTask;
|
||||||
|
|
||||||
|
class ScheduledTaskTest extends \MailPoetTest {
|
||||||
|
function _before() {
|
||||||
|
$this->task = ScheduledTask::create();
|
||||||
|
$this->task->hydrate(array(
|
||||||
|
'status' => ScheduledTask::STATUS_SCHEDULED
|
||||||
|
));
|
||||||
|
$this->task->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanBeCompleted() {
|
||||||
|
$this->task->complete();
|
||||||
|
expect($this->task->status)->equals(ScheduledTask::STATUS_COMPLETED);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItSetsDefaultPriority() {
|
||||||
|
expect($this->task->priority)->equals(ScheduledTask::PRIORITY_MEDIUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||||
|
}
|
||||||
|
}
|
56
tests/unit/Tasks/Subscribers/BatchIteratorTest.php
Normal file
56
tests/unit/Tasks/Subscribers/BatchIteratorTest.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
namespace MailPoet\Test\Tasks\Subscribers;
|
||||||
|
|
||||||
|
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||||
|
use MailPoet\Tasks\Subscribers\BatchIterator;
|
||||||
|
|
||||||
|
class BatchIteratorTest extends \MailPoetTest {
|
||||||
|
function _before() {
|
||||||
|
$this->task_id = 123;
|
||||||
|
$this->batch_size = 2;
|
||||||
|
$this->subscriber_count = 5;
|
||||||
|
for($i = 0; $i < $this->subscriber_count; $i++) {
|
||||||
|
ScheduledTaskSubscriber::createOrUpdate(array(
|
||||||
|
'task_id' => $this->task_id,
|
||||||
|
'subscriber_id' => $i + 1,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
$this->iterator = new BatchIterator($this->task_id, $this->batch_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItFailsToConstructWithWrongArguments() {
|
||||||
|
try {
|
||||||
|
$iterator = new BatchIterator(0, 0);
|
||||||
|
$this->fail('Exception was not thrown');
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
// No exception handling necessary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItConstructs() {
|
||||||
|
$iterator = new BatchIterator(123, 456);
|
||||||
|
expect_that($iterator instanceof BatchIterator);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItIterates() {
|
||||||
|
$iterations = ceil($this->subscriber_count / $this->batch_size);
|
||||||
|
$i = 0;
|
||||||
|
foreach($this->iterator as $batch) {
|
||||||
|
$i++;
|
||||||
|
if($i < $iterations) {
|
||||||
|
expect(count($batch))->equals($this->batch_size);
|
||||||
|
} else {
|
||||||
|
expect(count($batch))->lessOrEquals($this->batch_size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect($i)->equals($iterations);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanBeCounted() {
|
||||||
|
expect(count($this->iterator))->equals($this->subscriber_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user