import unittest import re from resync.resource import Resource from resync.resource_list import ResourceList from resync.resource_set import ResourceSetDupeError from resync.change_list import ChangeList from resync.capability_list import CapabilityList class TestCapabilityList(unittest.TestCase): def test01_add(self): # one caps = CapabilityList() r1 = Resource(uri='http://example.org/r1') caps.add(r1) self.assertEqual(len(caps), 1) # dupe self.assertRaises(ResourceSetDupeError, caps.add, r1) self.assertEqual(len(caps), 1) # dupe with replace caps = CapabilityList() caps.add([r1, r1], replace=True) self.assertEqual(len(caps), 1) # diff caps = CapabilityList() r2 = ChangeList(uri='http://example.org/r2') caps.add([r1, r2]) self.assertEqual(len(caps), 2) def test02_resourcelist(self): rl = ResourceList() caps = CapabilityList() caps.add_capability(rl, "http://example.org/resourcelist.xml") caps.md['from'] = "2013-02-07T22:39:00" self.assertEqual(len(caps), 1) print(caps.as_xml()) self.assertEqual(caps.as_xml(), '\nhttp://example.org/resourcelist.xml') def test03_multiple(self): caps = CapabilityList() rl = ResourceList() caps.add_capability(rl, "rl.xml") cl = ChangeList() caps.add_capability(cl, "cl.xml") self.assertEqual(len(caps), 2) xml = caps.as_xml() self.assertTrue( re.search(r'rl.xml', xml)) self.assertTrue( re.search(r'cl.xml', xml)) def test04_parse(self): xml = '\nhttp://example.org/resourcelist.xml' cl = CapabilityList() cl.parse(str_data=xml) self.assertEqual(cl.capability, 'capabilitylist') self.assertEqual(len(cl.resources), 1, 'got 1 resource') [r] = cl.resources self.assertEqual( r.uri, 'http://example.org/resourcelist.xml', 'resourcelist uri') self.assertEqual(r.capability, 'resourcelist')