John Vandenberg has uploaded a new change for review. https://gerrit.wikimedia.org/r/138225
Change subject: Add unit test classes and an example ...................................................................... Add unit test classes and an example A logged in edit test case needs to be skipped when the user-config.py doesnt allow it to be tested. Change-Id: I6cf347a30376a272be232efabd1c9a2558c156bd --- M tests/utils.py A tests/wikibase_edit_tests.py 2 files changed, 99 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core refs/changes/25/138225/1 diff --git a/tests/utils.py b/tests/utils.py index a37e75c..d551b80 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -26,6 +26,7 @@ # unittest one. return unittest.loader.defaultTestLoader.discover("tests", "*tests.py") +from pywikibot import config, Site from tests import patch_request, unpatch_request @@ -39,3 +40,49 @@ def tearDown(self): unpatch_request() + + +class PywikibotSiteTestCase(PywikibotTestCase): + """ + Run tests against a specific site + """ + family = None + code = 'test' + site = None + + @classmethod + def setUpClass(cls): + super(PywikibotSiteTestCase, cls).setUpClass() + + if not cls.family or not cls.code: + raise Error('%s does not have family or code' % cls.__name__) + cls.site = Site(cls.code, cls.family) + + +class PywikibotSiteUserTestCase(PywikibotSiteTestCase): + """ + To run tests against a specific site, with a login + """ + + @classmethod + def setUpClass(cls): + super(PywikibotSiteUserTestCase, cls).setUpClass() + + print 'looking for username of site' + if cls.site.code not in config.usernames[cls.family] and \ + '*' not in config.usernames[cls.family]: + raise unittest.SkipTest('No username for %s' % cls.site) + cls.site.login() + + +class PywikibotSiteUserEditTestCase(PywikibotSiteUserTestCase): + """ + When editing, the API should not be patched to use + CachedRequest as is done in PywikibotTestCase. + """ + + def setUp(self): + pass + + def tearDown(self): + pass diff --git a/tests/wikibase_edit_tests.py b/tests/wikibase_edit_tests.py new file mode 100644 index 0000000..4f3d385 --- /dev/null +++ b/tests/wikibase_edit_tests.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +""" +Tests for editing Wikibase items +""" +# +# (C) Pywikibot team, 2014 +# +# Distributed under the terms of the MIT license. +# +__version__ = '$Id$' +# + +import pywikibot + +from tests.utils import PywikibotSiteUserEditTestCase, unittest + + +class TestGeneral(PywikibotSiteUserEditTestCase): + + family = 'wikidata' + + def testSetLabel(self): + testsite = self.site.data_repository() + item = pywikibot.ItemPage(testsite, 'Q68') + self.assertType(item, pywikibot.ItemPage) + self.assertEqual(item.getID(), 'Q68') + item.editLabels({'en': 'Test123'}) + + def testClearLabel(self): + testsite = self.site.data_repository() + item = pywikibot.ItemPage(testsite, 'Q68') + # These two should be additive + item.editLabels({'en': 'Test123'}) + item.editLabels({'fa': 'Test123'}) + item.get(force=True) + self.assertTrue('en' in item.labels.keys(), False) + self.assertTrue('fa' in item.labels.keys()) + + # This should remove the 'fa' label + item.editLabels({'en': 'Test123', 'fa': ''}) + + # Check 'fa' label is removed + item = pywikibot.ItemPage(testsite, 'Q68') + item.get(force=True) + self.assertEquals('fa' in item.labels.keys(), False) + + +if __name__ == '__main__': + try: + unittest.main() + except SystemExit: + pass -- To view, visit https://gerrit.wikimedia.org/r/138225 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6cf347a30376a272be232efabd1c9a2558c156bd Gerrit-PatchSet: 1 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: John Vandenberg <jay...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits