jenkins-bot has submitted this change and it was merged.
Change subject: Unit testing for Newsletter extension
......................................................................
Unit testing for Newsletter extension
Version 1 of unit test to check the case of user trying
to subscribe and unsubscribe to existing newsletters.
Bug: T108202
Change-Id: I048e0feaf0879403bb7c4c28b076f323a17092e9
---
M Newsletter.hooks.php
M Newsletter.php
A tests/ApiNewsletterTest.php
3 files changed, 95 insertions(+), 0 deletions(-)
Approvals:
01tonythomas: Looks good to me, approved
jenkins-bot: Verified
diff --git a/Newsletter.hooks.php b/Newsletter.hooks.php
index 0ccfac6..b25e66f 100755
--- a/Newsletter.hooks.php
+++ b/Newsletter.hooks.php
@@ -73,4 +73,10 @@
return true;
}
+
+ public static function onUnitTestsList( &$files ) {
+ $files = array_merge( $files, glob( __DIR__ .
'/tests/*Test.php' ) );
+
+ return true;
+ }
}
diff --git a/Newsletter.php b/Newsletter.php
index a5bb680..56c4237 100755
--- a/Newsletter.php
+++ b/Newsletter.php
@@ -76,3 +76,4 @@
$wgHooks['LoadExtensionSchemaUpdates'][] =
'NewsletterHooks::onLoadExtensionSchemaUpdates';
$wgHooks['BeforeCreateEchoEvent'][] =
'NewsletterHooks::onBeforeCreateEchoEvent';
$wgHooks['EchoGetDefaultNotifiedUsers'][] =
'NewsletterHooks::onEchoGetDefaultNotifiedUsers';
+$wgHooks['UnitTestsList'][] = 'NewsletterHooks::onUnitTestsList';
diff --git a/tests/ApiNewsletterTest.php b/tests/ApiNewsletterTest.php
new file mode 100644
index 0000000..8475145
--- /dev/null
+++ b/tests/ApiNewsletterTest.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Unit test to test Api module - ApiNewsletter
+ *
+ * @group API
+ * @group medium
+ * @group Database
+ * @covers ApiNewsletter
+ * @author Tina Johnson
+ */
+
+class ApiNewsletterTest extends ApiTestCase {
+ protected function setUp() {
+ parent::setUp();
+ $dbw = wfGetDB( DB_MASTER );
+
+ $user = User::newFromName( "Owner" );
+ $user->addToDatabase();
+
+ $rowData = array(
+ 'nl_name' => 'MyNewsletter',
+ 'nl_desc' => 'This is a newsletter',
+ 'nl_main_page_id' => 1,
+ 'nl_frequency' => 'monthly',
+ 'nl_owner_id' => $user->getId()
+ );
+ $dbw->insert( 'nl_newsletters', $rowData, __METHOD__ );
+ $this->tablesUsed = array( 'nl_newsletters' );
+ }
+
+ protected function getNewsletterId() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select(
+ 'nl_newsletters',
+ array( 'nl_id' ),
+ array(
+ 'nl_name' => 'MyNewsletter'
+ ),
+ __METHOD__
+ );
+ $newsletterId = null;
+ foreach ( $res as $row ) {
+ $newsletterId = $row->nl_id;
+ }
+
+ return $newsletterId;
+ }
+
+ function testApiNewsletterForSubscribingNewsletter() {
+ $this->doApiRequest( array(
+ 'action' => 'newsletterapi',
+ 'newsletterId' => $this->getNewsletterId(),
+ 'todo' => 'subscribe'
+ ) );
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->selectRowCount(
+ 'nl_subscriptions',
+ array( 'subscriber_id' ),
+ array(
+ 'newsletter_id' => $this->getNewsletterId()
+ ),
+ __METHOD__
+ );
+
+ $this->assertEquals( $result, 1 );
+ }
+
+ function testApiNewsletterForUnsubscribingNewsletter() {
+ $this->doApiRequest( array(
+ 'action' => 'newsletterapi',
+ 'newsletterId' => $this->getNewsletterId(),
+ 'todo' => 'unsubscribe'
+ ) );
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->selectRowCount(
+ 'nl_subscriptions',
+ array( 'subscriber_id' ),
+ array(
+ 'newsletter_id' => $this->getNewsletterId()
+ ),
+ __METHOD__
+ );
+
+ $this->assertEquals( $result, 0 );
+ }
+}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/231599
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I048e0feaf0879403bb7c4c28b076f323a17092e9
Gerrit-PatchSet: 11
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Tinaj1234 <[email protected]>
Gerrit-Reviewer: 01tonythomas <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Qgil <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits