wiki.techinc.nl/tests/phpunit/includes/mail/EmailNotificationTest.php
Umherirrender 41f6d9eee4 tests: Add missing documentation to class properties
Add doc-typehints to class properties found by the PropertyDocumentation
sniff to improve the documentation.

Once the sniff is enabled it avoids that new code is missing type
declarations. This is focused on documentation and does not change code.

Change-Id: Ifc27750207edc09e94af030d882b6f1a5369cf98
2024-09-18 17:25:42 +00:00

56 lines
1.8 KiB
PHP

<?php
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;
/**
* @group Database
* @group Mail
* @covers \EmailNotification
*/
class EmailNotificationTest extends MediaWikiIntegrationTestCase {
/** @var EmailNotification */
protected $emailNotification;
protected function setUp(): void {
parent::setUp();
$this->emailNotification = new EmailNotification();
$this->overrideConfigValue( MainConfigNames::WatchlistExpiry, true );
}
public function testNotifyOnPageChange(): void {
$store = $this->getServiceContainer()->getWatchedItemStore();
// both Alice and Bob watch 'Foobar'
$title = Title::makeTitle( NS_MAIN, 'Foobar' );
$alice = $this->getTestSysop()->getUser();
$store->addWatch( $alice, $title );
$bob = $this->getTestUser()->getUser();
$store->addWatch( $bob, $title );
// Alice edits the page (doesn't actually have to edit in this test).
// Bob (as in, not Alice) should have received an email notification.
$notifyArgs = [ $alice, $title, '20200624000000', '', false ];
$sent = $this->emailNotification->notifyOnPageChange( ...$notifyArgs );
static::assertTrue( $sent );
// Alice edits again, but Bob shouldn't be notified again
// (only one email until Bob visits the page again).
$sent = $this->emailNotification->notifyOnPageChange( ...$notifyArgs );
static::assertFalse( $sent );
// Reset notification timestamp, simulating that Bob visited the page.
$store->resetAllNotificationTimestampsForUser( $bob );
// Bob re-watches temporarily. For testing purposes we use a past expiry,
// so an email shouldn't be sent after Alice edits the page.
$store->addWatch( $bob, $title, '20060123000000' );
// Alice edits again, email should not be sent.
$sent = $this->emailNotification->notifyOnPageChange( ...$notifyArgs );
static::assertFalse( $sent );
}
}