136 lines
3.9 KiB
PHP
136 lines
3.9 KiB
PHP
<?php
|
|
|
|
use MailPoet\Mailer\Mailer;
|
|
use MailPoet\Mailer\MailerLog;
|
|
use MailPoet\Models\Setting;
|
|
|
|
class MailerLogTest extends MailPoetTest {
|
|
function testItGetsMailerLogWhenOneExists() {
|
|
$mailer_log = array(
|
|
'sent' => 0,
|
|
'started' => time()
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
expect(MailerLog::getMailerLog())->equals($mailer_log);
|
|
}
|
|
|
|
function testItGetsMailerLogWhenOneDoesNotExist() {
|
|
$mailer_log = MailerLog::getMailerLog();
|
|
expect($mailer_log['sent'])->equals(0);
|
|
expect(strlen($mailer_log['started']))->greaterThan(5);
|
|
}
|
|
|
|
function testItCreatesMailer() {
|
|
$mailer_log = MailerLog::createMailerLog();
|
|
expect($mailer_log['sent'])->equals(0);
|
|
expect(strlen($mailer_log['started']))->greaterThan(5);
|
|
}
|
|
|
|
function testItResetsMailerLog() {
|
|
$mailer_log = array(
|
|
'sent' => 1,
|
|
'started' => time() - 10
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
MailerLog::resetMailerLog();
|
|
$updated_mailer_log = Setting::getValue(MailerLog::SETTING_NAME);
|
|
expect($updated_mailer_log['sent'])->equals(0);
|
|
expect($updated_mailer_log['started'])->greaterThan($mailer_log['started']);
|
|
}
|
|
|
|
function testItUpdatesMailerLog() {
|
|
$mailer_log = array(
|
|
'sent' => 1,
|
|
'started' => time() - 10
|
|
);
|
|
MailerLog::updateMailerLog($mailer_log);
|
|
$updated_mailer_log = Setting::getValue(MailerLog::SETTING_NAME);
|
|
expect($updated_mailer_log)->equals($mailer_log);
|
|
}
|
|
|
|
function testItIncrementsSentCount() {
|
|
$mailer_log = array(
|
|
'sent' => 1,
|
|
'started' => time()
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
MailerLog::incrementSentCount();
|
|
$updated_mailer_log = Setting::getValue(MailerLog::SETTING_NAME);
|
|
expect($updated_mailer_log['sent'])->equals(2);
|
|
}
|
|
|
|
function testItChecksWhenSendingLimitIsReached() {
|
|
$mailer_config = array(
|
|
'frequency' => array(
|
|
'emails' => 2,
|
|
'interval' => 1
|
|
)
|
|
);
|
|
Setting::setValue(Mailer::MAILER_CONFIG_SETTING_NAME, $mailer_config);
|
|
|
|
// limit is not reached
|
|
$mailer_log = array(
|
|
'sent' => 1,
|
|
'started' => time()
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
expect(MailerLog::isSendingLimitReached())->false();
|
|
|
|
// limit is reached
|
|
$mailer_log = array(
|
|
'sent' => 2,
|
|
'started' => time()
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
expect(MailerLog::isSendingLimitReached())->true();
|
|
}
|
|
|
|
function testItResetsMailerAfterSendingLimitWaitPeriodIsOver() {
|
|
$mailer_config = array(
|
|
'frequency' => array(
|
|
'emails' => 2,
|
|
'interval' => 1
|
|
)
|
|
);
|
|
$mailer_log = array(
|
|
'sent' => 2,
|
|
// (mailer config's interval * 60 seconds) + 1 second
|
|
'started' => time() - 61
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
Setting::setValue(Mailer::MAILER_CONFIG_SETTING_NAME, $mailer_config);
|
|
|
|
// limit is not reached
|
|
expect(MailerLog::isSendingLimitReached())->false();
|
|
// mailer log is reset
|
|
$updated_mailer_log = Setting::getValue(MailerLog::SETTING_NAME);
|
|
expect($updated_mailer_log['sent'])->equals(0);
|
|
}
|
|
|
|
function testItCanEnforceSendingLimit() {
|
|
$mailer_config = array(
|
|
'frequency' => array(
|
|
'emails' => 2,
|
|
'interval' => 1
|
|
)
|
|
);
|
|
$mailer_log = array(
|
|
'sent' => 2,
|
|
'started' => time()
|
|
);
|
|
Setting::setValue(MailerLog::SETTING_NAME, $mailer_log);
|
|
Setting::setValue(Mailer::MAILER_CONFIG_SETTING_NAME, $mailer_config);
|
|
|
|
// exception is thrown when sending limit is reached
|
|
try {
|
|
MailerLog::enforceSendingLimit();
|
|
self::fail('Sending frequency exception was not thrown.');
|
|
} catch(\Exception $e) {
|
|
expect($e->getMessage())->equals('Sending frequency limit has been reached.');
|
|
}
|
|
}
|
|
|
|
function _after() {
|
|
ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
|
}
|
|
} |