jenkins-bot has submitted this change and it was merged.

Change subject: Add must_be unit tests
......................................................................


Add must_be unit tests

Change-Id: I4ee61c6e550bb08c3e0f367e4cecafff81c9ad1c
---
M tests/site_tests.py
1 file changed, 52 insertions(+), 0 deletions(-)

Approvals:
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/tests/site_tests.py b/tests/site_tests.py
index 6c93c0c..79db3e2 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -11,6 +11,7 @@
 
 
 import pywikibot
+from pywikibot.site import must_be
 from tests import patch_request, unpatch_request
 from utils import PywikibotTestCase, unittest
 
@@ -1106,6 +1107,57 @@
         # TODO test other optional arguments
 
 
+class TestMustBe(PywikibotTestCase):
+    """Test cases for the must_be decorator."""
+
+    # Implemented without setUpClass(cls) and global variables as objects
+    # were not completely disposed and recreated but retained 'memory'
+    def setUp(self):
+        self._logged_in_as = None
+
+    def login(self, sysop):
+        # mock call
+        self._logged_in_as = 'sysop' if sysop else 'user'
+
+    def testMockInTest(self):
+        self.assertEqual(self._logged_in_as, None)
+        self.login(True)
+        self.assertEqual(self._logged_in_as, 'sysop')
+
+    testMockInTestReset = testMockInTest
+
+    @must_be('sysop')
+    def call_this_sysop_req_function(self, *args, **kwargs):
+        return args, kwargs
+
+    @must_be('user')
+    def call_this_user_req_function(self, *args, **kwargs):
+        return args, kwargs
+
+    def testMustBeSysop(self):
+        args = (1, 2, 'a', 'b')
+        kwargs = {'i': 'j', 'k': 'l'}
+        retval = self.call_this_sysop_req_function(*args, **kwargs)
+        self.assertEqual(retval[0], args)
+        self.assertEqual(retval[1], kwargs)
+        self.assertEqual(self._logged_in_as, 'sysop')
+
+    def testMustBeUser(self):
+        args = (1, 2, 'a', 'b')
+        kwargs = {'i': 'j', 'k': 'l'}
+        retval = self.call_this_user_req_function(*args, **kwargs)
+        self.assertEqual(retval[0], args)
+        self.assertEqual(retval[1], kwargs)
+        self.assertEqual(self._logged_in_as, 'user')
+
+    def testOverrideUserType(self):
+        args = (1, 2, 'a', 'b')
+        kwargs = {'i': 'j', 'k': 'l'}
+        retval = self.call_this_user_req_function(*args, as_group='sysop', 
**kwargs)
+        self.assertEqual(retval[0], args)
+        self.assertEqual(retval[1], kwargs)
+        self.assertEqual(self._logged_in_as, 'sysop')
+
 if __name__ == '__main__':
     try:
         try:

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4ee61c6e550bb08c3e0f367e4cecafff81c9ad1c
Gerrit-PatchSet: 4
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <valhall...@arctus.nl>
Gerrit-Reviewer: Ladsgroup <ladsgr...@gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhall...@arctus.nl>
Gerrit-Reviewer: Nullzero <nullzero.f...@gmail.com>
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

Reply via email to