Lokal Profil has uploaded a new change for review.

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

Change subject: Add edit tests for WbMonolingualText
......................................................................

Add edit tests for WbMonolingualText

Also adds the monolingualtext type to page.py which is required in
order to actually add such claims.

Bug: T123856
Change-Id: I88be5687f7df914bceb4497206947324fc593947
---
M pywikibot/page.py
M tests/wikibase_edit_tests.py
M tests/wikibase_tests.py
3 files changed, 73 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/35/264935/1

diff --git a/pywikibot/page.py b/pywikibot/page.py
index 48e9c36..82a9028 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -4078,6 +4078,7 @@
              'url': basestring,
              'time': pywikibot.WbTime,
              'quantity': pywikibot.WbQuantity,
+             'monolingualtext': pywikibot.WbMonolingualText,
              }
 
     value_types = {'wikibase-item': 'wikibase-entityid',
diff --git a/tests/wikibase_edit_tests.py b/tests/wikibase_edit_tests.py
index fe9eccc..fbae8d3 100644
--- a/tests/wikibase_edit_tests.py
+++ b/tests/wikibase_edit_tests.py
@@ -15,6 +15,7 @@
 import pywikibot
 
 from tests.aspects import unittest, WikibaseTestCase
+from pywikibot.data.api import APIError
 
 
 class TestWikibaseWriteGeneral(WikibaseTestCase):
@@ -172,6 +173,76 @@
         self.assertEqual(new_item.getRedirectTarget(), target_item)
 
 
+class TestWbMonolingualText(WikibaseTestCase):
+
+    """Run wikibase write tests for WbMonolingualText."""
+
+    family = 'wikidata'
+    code = 'test'
+
+    user = True
+    write = True
+
+    def reset(self, qid='Q68', pid='P271'):
+        """Clean the slate in preparation for test"""
+        testsite = self.get_repo()
+        item = pywikibot.ItemPage(testsite, qid)
+        item.get()
+        if pid in item.claims:
+            item.removeClaims(item.claims[pid])
+
+    def test_WbMonolingualText_edit(self):
+        """Attempt adding a monolingual text with valid input."""
+        self.reset()
+        testsite = self.get_repo()
+        item = pywikibot.ItemPage(testsite, 'Q68')
+        item.get(force=True)
+
+        # set new claim
+        claim = pywikibot.page.Claim(testsite, 'P271', 
datatype='monolingualtext')
+        target = pywikibot.WbMonolingualText(text='Test this!', language='en')
+        claim.setTarget(target)
+        item.addClaim(claim)
+
+    def test_WbMonolingualText_invalid_language(self):
+        """Attempt adding a monolingual text with an invalid language."""
+        self.reset()
+        testsite = self.get_repo()
+        item = pywikibot.ItemPage(testsite, 'Q68')
+        item.get(force=True)
+
+        # set new claim
+        claim = pywikibot.page.Claim(testsite, 'P271', 
datatype='monolingualtext')
+        target = pywikibot.WbMonolingualText(text='Test this!', language='foo')
+        claim.setTarget(target)
+
+        # assert that error is raised and has the expected code
+        self.assertRaises(APIError, item.addClaim, claim)
+        try:
+            item.addClaim(claim)
+        except APIError as e:
+            self.assertEqual(e.code, 'modification-failed')
+
+    def test_WbMonolingualText_invalid_text(self):
+        """Attempt adding a monolingual text with an invalid non-string 
text."""
+        self.reset()
+        testsite = self.get_repo()
+        item = pywikibot.ItemPage(testsite, 'Q68')
+        item.get(force=True)
+
+        # set new claim
+        claim = pywikibot.page.Claim(testsite, 'P271', 
datatype='monolingualtext')
+        target = pywikibot.WbMonolingualText(text=123456, language='en')
+        claim.setTarget(target)
+
+        # assert that error is raised and has the expected code
+        self.assertRaises(APIError, item.addClaim, claim)
+        try:
+            item.addClaim(claim)
+        except APIError as e:
+            self.assertEqual(e.code, 'invalid-snak')
+
+
 class TestWikibaseRemoveQualifier(WikibaseTestCase):
 
     """Run wikibase write tests to remove qualifiers."""
diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py
index 53d7cee..3d844b7 100644
--- a/tests/wikibase_tests.py
+++ b/tests/wikibase_tests.py
@@ -244,7 +244,7 @@
         q = pywikibot.WbMonolingualText.fromWikibase({'text': 'Test this!',
                                                       'language': u'en'})
         self.assertEqual(q.toWikibase(),
-                         {'text': 'Test this!', 'language': 'en', })
+                         {'text': 'Test this!', 'language': 'en'})
 
     def test_WbMonolingualText_errors(self):
         # test WbMonolingualText error handling

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I88be5687f7df914bceb4497206947324fc593947
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Lokal Profil <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to