def test_set_target(self): claim = Claim('P144', datatype='wikibase-item') self.assertRaises(ValueError, claim.setTarget, "Hello!") claim = Claim('P144', datatype='time') self.assertRaises(ValueError, claim.setTarget, ItemPage('Q5')) self.assertRaises(ValueError, claim.setTarget, "Hello!")
def test_add_claim(self): claim = Claim('P17', datatype='wikibase-item') claim.setTarget(ItemPage('Q91')) self.item_page.addClaim(claim) self.assertIn('P17', self.item_page.claims) self.assertEqual(len(self.item_page.claims['P17']), 1) self.assertIsInstance(self.item_page.claims['P17'][0], Claim)
def test_qualifiers(self): source = self.claim1.sources[0]['P143'][0] self.assertRaises(ValueError, source.has_qualifier, 'P31', 'Q5') qualifier = Claim('P31', datatype='wikibase-item') qualifier.setTarget(ItemPage('Q5')) self.claim1.addQualifier(qualifier) self.assertRaises(ValueError, source.addQualifier, qualifier) self.assertEqual(self.claim1.qualifiers['P31'][0], qualifier) self.assertTrue(qualifier.isQualifier) self.assertTrue(self.claim1.has_qualifier('P31', 'Q5')) self.assertFalse(self.claim1.has_qualifier('P31', 'Q6')) self.assertFalse(self.claim1.has_qualifier('P32', 'Q5'))
def test_diffto(self): wb_page = self.wb_page content = wb_page.toJSON() claim_json = wb_page.claims['P31'][0].toJSON() wb_page.claims['P31'][0].target = ItemPage('Q6') res = wb_page.toJSON(diffto=claim_json) self.assertEqual(content['labels'], res['labels']) self.assertEqual(content['descriptions'], res['descriptions']) self.assertEqual(content['aliases'], res['aliases']) for p_number in content['claims']: if p_number != 'P31': self.assertEqual(content['claims'][p_number], res['claims'][p_number]) snak_json = res['claims']['P31'][0]['mainsnak'] self.assertEqual(snak_json['datavalue']['value']['numeric-id'], 6)
def test_sources(self): self.assertIsInstance(self.claim1.sources, list) self.assertIsInstance(self.claim1.sources[0], OrderedDict) self.assertIn('P143', self.claim1.sources[0]) self.assertIsInstance(self.claim1.sources[0]['P143'], list) self.assertEqual(len(self.claim1.sources), 2) self.assertEqual(self.claim1.getSources(), self.claim1.sources) sources_copy = self.claim1.sources source = Claim('P144', datatype='wikibase-item') source.setTarget(ItemPage('Q5')) self.claim1.addSource(source) self.assertIn('P144', self.claim1.sources[-1]) self.assertEqual(source, self.claim1.sources[-1]['P144'][0]) self.claim1.removeSource(source) self.assertEqual(self.claim1.sources, sources_copy)
class TestItemPage(unittest.TestCase): def setUp(self): with open(os.path.join(os.path.split(__file__)[0], 'data', 'Q7251.wd')) as f: self._content = json.load(f)['entities']['Q7251'] self.item_page = ItemPage() self.item_page.get(content=self._content) def test_init_item(self): self.assertEqual(self.item_page.getID(), 'Q7251') self.assertRaises(RuntimeError, ItemPage, title='Null') self.assertRaises(RuntimeError, ItemPage, title='P15') def test_sitelinks(self): self.assertEqual(len(self.item_page.sitelinks), 134) self.assertIn('fawiki', self.item_page.sitelinks) self.assertNotIn('fa', self.item_page.sitelinks) self.assertIsInstance(self.item_page.sitelinks['enwiki'], basestring) def test_add_claim(self): claim = Claim('P17', datatype='wikibase-item') claim.setTarget(ItemPage('Q91')) self.item_page.addClaim(claim) self.assertIn('P17', self.item_page.claims) self.assertEqual(len(self.item_page.claims['P17']), 1) self.assertIsInstance(self.item_page.claims['P17'][0], Claim) def test_remove_claim(self): claim = self.item_page.claims['P31'][0] old_claims = self.item_page.claims.copy() self.item_page.removeClaims(claim) self.assertNotEqual(self.item_page.claims, old_claims) self.assertNotIn('P31', self.item_page.claims) def test_badges(self): self.assertEqual(len(self.item_page.badges), 4) self.assertEqual(self.item_page.badges['enwiki'], ['Q17437798']) self.assertIn('enwiki', self.item_page.badges) self.assertNotIn('fawiki', self.item_page.badges)
def setUp(self): with open(os.path.join(os.path.split(__file__)[0], 'data', 'Q7251.wd')) as f: self._content = json.load(f)['entities']['Q7251'] self.item_page = ItemPage() self.item_page.get(content=self._content)