def test_xpath(self): feed_elem = etree.XML(self.feed_xml.encode('utf-8')) # "*[local-name()='foo']" ignores namespaces and matches all nodes with tag "foo": timestamp = get_timestamp( feed_elem, "./*[local-name()='entry']/*[local-name()='updated']") self.assertEqual(timestamp, datetime(2018, 4, 26, 10, 56, 10, tzinfo=tzutc()))
def test_timezone(self): xml = re.sub(r'2018-05-15T14:02:08Z', '2018-05-15T14:02:08+0500', self.feed_xml) feed_elem = etree.XML(xml.encode('utf-8')) timestamp = get_timestamp(feed_elem) self.assertEqual( timestamp, datetime(2018, 5, 15, 14, 2, 8, tzinfo=tzoffset(None, 5 * 60 * 60)))
def test_timezone(self): xml = re.sub(r'2018-05-15T14:02:08Z', '2018-05-15T14:02:08+0500', self.feed_xml) feed_elem = etree.XML(xml.encode('utf-8')) timestamp = get_timestamp(feed_elem) self.assertEqual(timestamp, datetime(2018, 5, 15, 14, 2, 8, tzinfo=tzoffset(None, 5 * 60 * 60)))
def test_bad_date(self): xml = re.sub(r'2018-05-15T14:02:08Z', 'Nevermore', self.feed_xml) feed_elem = etree.XML(xml.encode('utf-8')) with self.assertRaisesRegex(ValueError, r'Unknown string format'): get_timestamp(feed_elem)
def test_xpath(self): feed_elem = etree.XML(self.feed_xml.encode('utf-8')) # "*[local-name()='foo']" ignores namespaces and matches all nodes with tag "foo": timestamp = get_timestamp(feed_elem, "./*[local-name()='entry']/*[local-name()='updated']") self.assertEqual(timestamp, datetime(2018, 4, 26, 10, 56, 10, tzinfo=tzutc()))
def test_no_node(self): xml = re.sub(r'<updated.*</updated>', '', self.feed_xml) feed_elem = etree.XML(xml.encode('utf-8')) with self.assertRaisesRegex(ValueError, r'^XPath "./atom:updated" not found$'): get_timestamp(feed_elem)