Files
piratepoet/tests/integration/Util/Notices/HeadersAlreadySentNoticeTest.php
2020-10-20 13:18:43 +02:00

109 lines
3.9 KiB
PHP

<?php
namespace MailPoet\Util\Notices;
use Codeception\Util\Stub;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions;
class HeadersAlreadySentNoticeTest extends \MailPoetTest {
/** @var SettingsController */
private $settings;
/** @var WPFunctions */
private $wp;
public function _before() {
parent::_before();
$this->settings = SettingsController::getInstance();
$this->wp = new WPFunctions;
delete_transient(HeadersAlreadySentNotice::OPTION_NAME);
}
public function _after() {
delete_transient(HeadersAlreadySentNotice::OPTION_NAME);
}
public function testItPrintsWarningWhenHeadersAreSent() {
$headersAlreadySentNotice = Stub::construct(
HeadersAlreadySentNotice::class,
[$this->settings, $this->wp],
['headersSent' => true]
);
$notice = $headersAlreadySentNotice->init(true);
expect($notice->getMessage())->stringContainsString('It looks like there\'s an issue with some of the PHP files on your website');
expect($notice->getMessage())->stringContainsString('https://kb.mailpoet.com/article/325-the-captcha-image-doesnt-show-up');
}
public function testItPrintsNoWarningWhenHeadersAreNotSent() {
$headersAlreadySentNotice = Stub::construct(
HeadersAlreadySentNotice::class,
[$this->settings, $this->wp],
['headersSent' => false]
);
$notice = $headersAlreadySentNotice->init(true);
expect($notice)->null();
}
public function testItPrintsWarningWhenWhitespaceIsInBuffer() {
ob_start();
echo " \n \t \r\n ";
$headersAlreadySentNotice = Stub::construct(
HeadersAlreadySentNotice::class,
[$this->settings, $this->wp],
['headersSent' => false]
);
$notice = $headersAlreadySentNotice->init(true);
expect($notice->getMessage())->stringContainsString('It looks like there\'s an issue with some of the PHP files on your website');
ob_end_clean();
}
public function testItPrintsNoWarningWhenDisabled() {
$headersAlreadySentNotice = Stub::construct(
HeadersAlreadySentNotice::class,
[$this->settings, $this->wp],
['headersSent' => true]
);
$warning = $headersAlreadySentNotice->init(false);
expect($warning)->null();
}
public function testItPrintsNoWarningWhenDismissed() {
$headersAlreadySentNotice = Stub::construct(
HeadersAlreadySentNotice::class,
[$this->settings, $this->wp],
['headersSent' => true]
);
$headersAlreadySentNotice->disable();
$warning = $headersAlreadySentNotice->init(true);
expect($warning)->null();
}
public function testItPrintsCaptchaAndTrackingMessagesIfEnabled() {
$headersAlreadySentNotice = Stub::make(HeadersAlreadySentNotice::class);
$notice = $headersAlreadySentNotice->display(true, true);
expect($notice->getMessage())->stringContainsString('Inaccurate tracking');
expect($notice->getMessage())->stringContainsString('CAPTCHA not rendering');
}
public function testItPrintsNoCaptchaMessageIfCaptchaDisabled() {
$headersAlreadySentNotice = Stub::make(HeadersAlreadySentNotice::class);
$notice = $headersAlreadySentNotice->display(false, true);
expect($notice->getMessage())->stringContainsString('Inaccurate tracking');
expect($notice->getMessage())->stringNotContainsString('CAPTCHA not rendering');
}
public function testItPrintsNoTrackingMessageIftrackingDisabled() {
$headersAlreadySentNotice = Stub::make(HeadersAlreadySentNotice::class);
$notice = $headersAlreadySentNotice->display(true, false);
expect($notice->getMessage())->stringNotContainsString('Inaccurate tracking');
expect($notice->getMessage())->stringContainsString('CAPTCHA not rendering');
}
public function testItPrintsNoMessagesWhenCaptchaAndTrackingDisabled() {
$headersAlreadySentNotice = Stub::make(HeadersAlreadySentNotice::class);
$notice = $headersAlreadySentNotice->display(false, false);
expect($notice)->null();
}
}