Xqt has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/282465

Change subject: [tests] Aditional unittests for build_table
......................................................................

[tests] Aditional unittests for build_table

Change-Id: I0ca9f38314562b673bafa45087bf41df21c495be
---
M imagereview.py
M tests/imagereview_tests.py
2 files changed, 98 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/bots/xqbot 
refs/changes/65/282465/1

diff --git a/imagereview.py b/imagereview.py
index f51a2d9..9c59b31 100644
--- a/imagereview.py
+++ b/imagereview.py
@@ -605,7 +605,7 @@
             self.save(i, text, summary=summary)
         return True  # returns klären!!!
 
-    def build_table(self, save=True):
+    def build_table(self, save=True, unittest=False):
 
         def f(k):
             r = 0
@@ -668,7 +668,7 @@
                         pywikibot.output(u'Max limit %d exceeded.' % 
self.total)
                         break
                     continue
-                if self.inform_user(key, table[key]):
+                if not unittest and self.inform_user(key, table[key]):
                     pywikibot.output(u'%s done.' % key)
                     informed.append(key)
                     k += l
@@ -684,7 +684,6 @@
             # jetzt wieder sortieren und (leider) erneuten Druchlauf
             informed.sort()
             keys = informed
-
         for key in keys:
             if self.getOption('check'):
 ##                cattext += u'\n== [[Benutzer:%s|]] ==\n\n' % key
@@ -700,7 +699,7 @@
             if self.getOption('check'):
                 self.save(cat, cattext, summary=u'Bot: Neue DÜP-Einträge')
             self.save(pywikibot.Page(self.site, self.dest), text)
-        return
+        return table
 
     def run_check(self):
         MAX = 500
diff --git a/tests/imagereview_tests.py b/tests/imagereview_tests.py
index 3834117..ca5f297 100644
--- a/tests/imagereview_tests.py
+++ b/tests/imagereview_tests.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8  -*-
-"""Test vandalism modules."""
+"""Test imagereview modules."""
 #
-# (C) xqt, 2015
+# (C) xqt, 2016
 #
 # Distributed under the terms of the MIT license.
 #
@@ -15,6 +15,8 @@
 import unittest
 
 import pywikibot
+from pywikibot import Timestamp
+from pywikibot.tools import StringTypes
 
 currentdir = os.path.dirname(
     os.path.abspath(inspect.getfile(inspect.currentframe())))
@@ -27,8 +29,6 @@
 class TestMessages(unittest.TestCase):
 
     """Test messages."""
-
-    net = False
 
     def test_message_keys(self):
         """Test message keys for mail and talk page."""
@@ -52,18 +52,25 @@
 
     @classmethod
     def setUpClass(cls):
+        """Setup class."""
+        super(TestDUP_Image, self).setUpClass()
         cls.site = pywikibot.Site('de', 'wikipedia')
         cls.review_tpl = pywikibot.Page(cls.site, 'düp', 10)
 
     @classmethod
     def tearDownClass(cls):
+        """Cleanup Class."""
         del cls.site
         del cls.review_tpl
+        super(TestDUP_Image, self).tearDownClass()
 
     def tearDown(self):
+        """Cleanup methods."""
         del self.image
+        super(TestDUP_Image, self).tearDown()
 
     def init_content(self):
+        """Instantiate DUP_Image."""
         self.image = imagereview.DUP_Image(self.site, 'Sample.jpg', self.TMPL)
         self.image._templates.append(self.review_tpl)
         self.image.text += self.TMPL
@@ -107,6 +114,90 @@
         self.assertTrue(self.image.hasRefs)
 
 
+class TestCheckImageBot(unittest.TestCase):
+
+    """Test CheckImageBot."""
+
+    def test_invalid_option(self):
+        """Test run method without options."""
+        with self.assertRaises(NotImplementedError):
+            bot = imagereview.CheckImageBot()
+
+    def test_invalid_option(self):
+        """Test run method without options."""
+        with self.assertRaises(NotImplementedError):
+            bot = imagereview.CheckImageBot()
+
+    def test_list_option(self):
+        """Test run method with list options."""
+        bot = imagereview.CheckImageBot(list=True, total=1)
+        self.assertEqual(bot.sort, 1)
+        self.assertTrue(bot.filter)
+        self.assertEqual(bot.total, 1)
+
+    def test_check_option(self):
+        """Test run method with check options."""
+        bot = imagereview.CheckImageBot(check=True)
+        self.assertEqual(bot.sort, 0)
+        self.assertFalse(bot.filter)
+        self.assertIsNone(bot.total)
+
+    def test_build_table_with_list(self):
+        """Test buildt table with list option."""
+        bot = imagereview.CheckImageBot(list=True)
+        table = bot.build_table(False)
+        if not table:
+            self.assertSkip()   
+        key = table.keys()[0]
+        data = table[key]
+        item = data[0]
+        self.assertIsInstance(key, StringTypes)
+        self.assertIsInstance(data, list)
+        self.assertIsInstance(item, list)
+        self.assertEqual(len(item), 4)
+        linkedtitle, uploader, filepage, reason = item
+        user, time = uploader
+        self.assertIsInstance(linkedtitle, StringTypes)
+        self.assertIsInstance(uploader, list)
+        self.assertIsInstance(filepage, imagereview.DUP_Image)
+        self.assertIsInstance(reason, StringTypes)
+        self.assertIsInstance(user, StringTypes)
+        self.assertIsInstance(time, StringTypes)
+        self.assertEqual(reason, '')
+        self.assertEqual(filepage.title(asLink=True, textlink=True),
+                         linkedtitle)
+        self.assertEqual(time, key)
+        self.assertIsInstance(Timestamp.fromISOformat(time), Timestamp)
+
+    def test_build_table_with_check(self):
+        """Test buildt table with check option."""
+        bot = imagereview.CheckImageBot(check=True, total=0)
+        bot.cat = 'Nonexisting page for imagereview'
+        table = bot.build_table(save=False, unittest=True)
+        if not table:
+            self.assertSkip()   
+        key = table.keys()[0]
+        data = table[key]
+        item = data[0]
+        self.assertIsInstance(key, StringTypes)
+        self.assertIsInstance(data, list)
+        self.assertIsInstance(item, list)
+        self.assertEqual(len(item), 4)
+        linkedtitle, uploader, filepage, reason = item
+        user, time = uploader
+        self.assertIsInstance(linkedtitle, StringTypes)
+        self.assertIsInstance(uploader, list)
+        self.assertIsInstance(filepage, imagereview.DUP_Image)
+        self.assertIsInstance(reason, StringTypes)
+        self.assertIsInstance(user, StringTypes)
+        self.assertIsInstance(time, StringTypes)
+        self.assertEqual(reason, '')
+        self.assertEqual(filepage.title(asLink=True, textlink=True),
+                         linkedtitle)
+        self.assertEqual(user, key)
+        self.assertIsInstance(Timestamp.fromISOformat(time), Timestamp)
+
+
 if __name__ == '__main__':
     try:
         unittest.main()

-- 
To view, visit https://gerrit.wikimedia.org/r/282465
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0ca9f38314562b673bafa45087bf41df21c495be
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/bots/xqbot
Gerrit-Branch: master
Gerrit-Owner: Xqt <i...@gno.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to