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