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)