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

Reply via email to