jenkins-bot has submitted this change and it was merged. Change subject: [tests] Aditional unittests for build_table ......................................................................
[tests] Aditional unittests for build_table - add py3 compatibility - add doc strings Change-Id: I0ca9f38314562b673bafa45087bf41df21c495be --- M imagereview.py M tests/imagereview_tests.py 2 files changed, 100 insertions(+), 9 deletions(-) Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified diff --git a/imagereview.py b/imagereview.py index f51a2d9..38af78d 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 @@ -632,7 +632,7 @@ table[sortkey].append([image.title(asLink=True, textlink=True), uploader, image, u'']) pywikibot.output(u'\nBuilding wiki table...') - keys = table.keys() + keys = list(table.keys()) # py3 compatibility if self.getOption('list'): keys.sort() else: @@ -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..014a276 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 config, 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, cls).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, cls).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,91 @@ self.assertTrue(self.image.hasRefs) +class TestCheckImageBot(unittest.TestCase): + + """Test CheckImageBot.""" + + @classmethod + def setUpClass(cls): + """Setup Class.""" + config.family = 'wikipedia' + config.mylang = 'de' + + def test_invalid_option(self): + """Test run method without options.""" + with self.assertRaises(NotImplementedError): + 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.skipTest() + key = list(table.keys())[0] # py3 comp + 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 = list(table.keys())[0] # py3 comp + 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: merged Gerrit-Change-Id: I0ca9f38314562b673bafa45087bf41df21c495be Gerrit-PatchSet: 10 Gerrit-Project: pywikibot/bots/xqbot Gerrit-Branch: master Gerrit-Owner: Xqt <i...@gno.de> Gerrit-Reviewer: Xqt <i...@gno.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits