def test_add_attribute(self): html = u""" <div> <div id="P27"> <div class="wikibase-statementgroupview-property-label"> <a href="/wiki/Property:P27"> country of citizenship </a> </div> <div class="wikibase-statementlistview"> <div class="wikibase-statementview listview-item"> <div class="wikibase-statementview-rankselector"> <span class="wikibase-rankselector-normal"></span> </div> <div class="wikibase-statementview-mainsnak"> <div> <div class="wikibase-snakview-value"> <a href="/wiki/Q145"> United Kingdom </a> </div> </div> </div> </div> </div> </div> </div> """ attributes = [] html_etree = fromstring(html) wikidata.add_attribute(attributes, html_etree, "Fail") self.assertEqual(attributes, []) wikidata.add_attribute(attributes, html_etree, "P27") self.assertEqual(len(attributes), 1) self.assertEqual(attributes[0]["label"], "Country of citizenship") self.assertEqual(attributes[0]["value"], "United Kingdom") html = u""" <div> <div id="P569"> <div class="wikibase-statementgroupview-property-label"> <a href="/wiki/Property:P569"> date of birth </a> </div> <div class="wikibase-statementlistview"> <div class="wikibase-statementview listview-item"> <div class="wikibase-statementview-rankselector"> <span class="wikibase-rankselector-normal"></span> </div> <div class="wikibase-statementview-mainsnak"> <div> <div class="wikibase-snakview-value"> 27 January 1832 <sup class="wb-calendar-name"> Gregorian </sup> </div> </div> </div> </div> </div> </div> </div> """ attributes = [] html_etree = fromstring(html) wikidata.add_attribute(attributes, html_etree, "P569", date=True) self.assertEqual(len(attributes), 1) self.assertEqual(attributes[0]["label"], "Date of birth") self.assertEqual(attributes[0]["value"], "27 January 1832") html = u""" <div> <div id="P6"> <div class="wikibase-statementgroupview-property-label"> <a href="/wiki/Property:P27"> head of government </a> </div> <div class="wikibase-statementlistview"> <div class="wikibase-statementview listview-item"> <div class="wikibase-statementview-rankselector"> <span class="wikibase-rankselector-normal"></span> </div> <div class="wikibase-statementview-mainsnak"> <div> <div class="wikibase-snakview-value"> <a href="/wiki/Q206"> Old Prime Minister </a> </div> </div> </div> </div> <div class="wikibase-statementview listview-item"> <div class="wikibase-statementview-rankselector"> <span class="wikibase-rankselector-preferred"></span> </div> <div class="wikibase-statementview-mainsnak"> <div> <div class="wikibase-snakview-value"> <a href="/wiki/Q3099714"> Actual Prime Minister </a> </div> </div> </div> </div> </div> </div> </div> """ attributes = [] html_etree = fromstring(html) wikidata.add_attribute(attributes, html_etree, "P6") self.assertEqual(len(attributes), 1) self.assertEqual(attributes[0]["label"], "Head of government") self.assertEqual(attributes[0]["value"], "Old Prime Minister, Actual Prime Minister") attributes = [] html_etree = fromstring(html) wikidata.add_attribute(attributes, html_etree, "P6", trim=True) self.assertEqual(len(attributes), 1) self.assertEqual(attributes[0]["value"], "Actual Prime Minister")