mediawiki-extensions-Echo/tests/phpunit/ThankYouEditTest.php
libraryupgrader 17a644263a build: Updating dependencies
composer:
* mediawiki/mediawiki-codesniffer: 36.0.0 → 37.0.0
  The following sniffs are failing and were disabled:
  * PSR12.Functions.ReturnTypeDeclaration.SpaceBeforeReturnType

npm:
* svgo: 2.3.0 → 2.3.1
  * https://npmjs.com/advisories/1754 (CVE-2021-33587)
* postcss: 7.0.35 → 7.0.36
  * https://npmjs.com/advisories/1693 (CVE-2021-23368)
* trim-newlines: 3.0.0 → 3.0.1
  * https://npmjs.com/advisories/1753 (CVE-2021-33623)

Change-Id: Id866782d39ac02a329bd79539f2d52392fffd296
2021-07-24 01:48:06 +00:00

78 lines
2.3 KiB
PHP

<?php
/**
* @group Echo
* @group Database
*/
class MWEchoThankYouEditTest extends MediaWikiTestCase {
protected function setUp(): void {
parent::setUp();
$this->tablesUsed[] = 'echo_event';
$this->tablesUsed[] = 'echo_notification';
}
private function deleteEchoData() {
$db = MWEchoDbFactory::newFromDefault()->getEchoDb( DB_PRIMARY );
$db->delete( 'echo_event', '*', __METHOD__ );
$db->delete( 'echo_notification', '*', __METHOD__ );
}
/**
* @covers \EchoHooks::onPageSaveComplete
*/
public function testFirstEdit() {
// setup
$this->deleteEchoData();
$user = $this->getMutableTestUser()->getUser();
$title = Title::newFromText( 'Help:MWEchoThankYouEditTest_testFirstEdit' );
// action
$this->edit( $title, $user, 'this is my first edit' );
// assertions
$notificationMapper = new EchoNotificationMapper();
$notifications = $notificationMapper->fetchByUser( $user, 10, null, [ 'thank-you-edit' ] );
$this->assertCount( 1, $notifications );
/** @var EchoNotification $notification */
$notification = reset( $notifications );
$this->assertSame( 1, $notification->getEvent()->getExtraParam( 'editCount', 'not found' ) );
}
/**
* @covers \EchoHooks::onPageSaveComplete
*/
public function testTenthEdit() {
// setup
$this->deleteEchoData();
$user = $this->getMutableTestUser()->getUser();
$title = Title::newFromText( 'Help:MWEchoThankYouEditTest_testTenthEdit' );
// action
// we could fast-forward the edit-count to speed things up
// but this is the only way to make sure duplicate notifications
// are not generated
for ( $i = 0; $i < 12; $i++ ) {
$this->edit( $title, $user, "this is edit #$i" );
// Reload to reflect deferred update
$user->clearInstanceCache();
}
// assertions
$notificationMapper = new EchoNotificationMapper();
$notifications = $notificationMapper->fetchByUser( $user, 10, null, [ 'thank-you-edit' ] );
$this->assertCount( 2, $notifications );
/** @var EchoNotification $notification */
$notification = reset( $notifications );
$this->assertSame( 10, $notification->getEvent()->getExtraParam( 'editCount', 'not found' ) );
}
private function edit( Title $title, User $user, $text ) {
$page = WikiPage::factory( $title );
$content = ContentHandler::makeContent( $text, $title );
$page->doUserEditContent( $content, $user, 'test' );
}
}