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

Reply via email to