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'))
Esempio n. 4
0
 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)