jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/377733 )
Change subject: Add test to ensure WbUnknown is used for unknown datatypes ......................................................................
Add test to ensure WbUnknown is used for unknown datatypes
Change-Id: I07ca798a78a91dfefb49a17b6f87c50f02800878 --- A tests/pages/Q60_unknown_datatype.wd M tests/wikibase_tests.py 2 files changed, 75 insertions(+), 0 deletions(-)
Approvals: Dalba: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/pages/Q60_unknown_datatype.wd b/tests/pages/Q60_unknown_datatype.wd new file mode 100644 index 0000000..54e1489 --- /dev/null +++ b/tests/pages/Q60_unknown_datatype.wd @@ -0,0 +1,45 @@ +{ + "id": "Q60", + "type": "item", + "lastrevid": 122836617, + "pageid": 186, + "aliases": { + "en": [ + { + "language": "en", + "value": "foo bar" + } + ] + }, + "labels": { + "en": { + "language": "en", + "value": "Foobar" + } + }, + "descriptions": { + "en": { + "language": "en", + "value": "An item with an unknown foobar datatype" + } + }, + "claims": { + "P99999": [ + { + "id": "Q60$efebe507-4e9f-4254-dc47-fake", + "mainsnak": { + "snaktype": "value", + "property": "P99999", + "datatype": "foo-unknown-bar", + "datavalue": { + "value": "foobar", + "type": "bar-unknown-foo" + } + }, + "type": "statement", + "rank": "normal" + } + ] + }, + "sitelinks": {} +} diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py index e5ae318..44bbe68 100644 --- a/tests/wikibase_tests.py +++ b/tests/wikibase_tests.py @@ -12,6 +12,11 @@
from decimal import Decimal
+try: + from unittest import mock +except ImportError: + import mock + import pywikibot
from pywikibot import pagegenerators @@ -829,6 +834,31 @@ {'text': 'Test this!', 'language': 'en'})
+class TestLoadUnknownType(WikidataTestCase): + + """Test unknown datatypes being loaded as WbUnknown.""" + + dry = True + + def setUp(self): + """Setup test.""" + super(TestLoadUnknownType, self).setUp() + wikidata = self.get_repo() + self.wdp = ItemPage(wikidata, 'Q60') + self.wdp.id = 'Q60' + with open(join_pages_path('Q60_unknown_datatype.wd')) as f: + self.wdp._content = json.load(f) + + def test_load_unknown(self): + """Ensure unknown value is loaded but raises a warning.""" + with mock.patch.object(pywikibot, 'warning', autospec=True) as warn: + self.wdp.get() + unknown_value = self.wdp.claims['P99999'][0].getTarget() + self.assertIsInstance(unknown_value, pywikibot.WbUnknown) + warn.assert_called_once_with( + 'foo-unknown-bar datatype is not supported yet.') + + class TestItemPageExtensibility(TestCase):
"""Test ItemPage extensibility."""
pywikibot-commits@lists.wikimedia.org