jenkins-bot has submitted this change and it was merged.
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/edit_failure_tests.py M tests/wikibase_edit_tests.py M tests/wikibase_tests.py 4 files changed, 57 insertions(+), 2 deletions(-)
Approvals: John Vandenberg: Looks good to me, approved jenkins-bot: Verified
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/edit_failure_tests.py b/tests/edit_failure_tests.py index 17ed20e..395a516 100644 --- a/tests/edit_failure_tests.py +++ b/tests/edit_failure_tests.py @@ -129,6 +129,28 @@ item = pywikibot.ItemPage(repo, 'Q6') self.assertRaises(pywikibot.PageNotSaved, item.save)
+ def _make_WbMonolingualText_claim(self, repo, text, language): + """Make a WbMonolingualText and set its value.""" + claim = pywikibot.page.Claim(repo, 'P271', datatype='monolingualtext') + target = pywikibot.WbMonolingualText(text=text, language=language) + claim.setTarget(target) + return claim + + def test_WbMonolingualText_invalid_language(self): + """Attempt adding a monolingual text with an invalid language.""" + repo = self.get_repo() + item = pywikibot.ItemPage(repo, 'Q68') + claim = self._make_WbMonolingualText_claim(repo, text='Test this!', + language='foo') + self.assertAPIError('modification-failed', None, item.addClaim, claim) + + def test_WbMonolingualText_invalid_text(self): + """Attempt adding a monolingual text with an invalid non-string text.""" + repo = self.get_repo() + item = pywikibot.ItemPage(repo, 'Q68') + claim = self._make_WbMonolingualText_claim(repo, text=123456, language='en') + self.assertAPIError('invalid-snak', None, item.addClaim, claim) +
if __name__ == '__main__': try: diff --git a/tests/wikibase_edit_tests.py b/tests/wikibase_edit_tests.py index fe9eccc..a350cf7 100644 --- a/tests/wikibase_edit_tests.py +++ b/tests/wikibase_edit_tests.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- -"""Tests for editing Wikibase items.""" +""" +Tests for editing Wikibase items. + +Tests which should fail should instead be in the TestWikibaseSaveTest +class in edit_failiure_tests.py +""" # # (C) Pywikibot team, 2014 # @@ -172,6 +177,33 @@ 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 test_WbMonolingualText_edit(self): + """Attempt adding a monolingual text with valid input.""" + # Clean the slate in preparation for test.""" + testsite = self.get_repo() + item = pywikibot.ItemPage(testsite, 'Q68') + item.get() + if 'P271' in item.claims: + item.removeClaims(item.claims['P271']) + 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) + + 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