def test00_dump_creation(self): i=ResourceList() i.add( Resource('http://ex.org/a', size=1, path='resync/test/testdata/a') ) i.add( Resource('http://ex.org/b', size=2, path='resync/test/testdata/b') ) d=Dump() d.check_files(resourcelist=i) self.assertEqual(d.total_size, 28)
def test_09_print_subset(self): r1 = Resource(uri='a',lastmod='2001-01-01',size=1234) r2 = Resource(uri='b',lastmod='2002-02-02',size=56789) r3 = Resource(uri='d',lastmod='2003-03-04',size=444) m = ResourceList() m.add(r1) m.add(r2) m.add(r3) self.assertEqual( Sitemap().resources_as_xml(m, num_resources=2), "<?xml version='1.0' encoding='UTF-8'?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:rs=\"http://www.openarchives.org/rs/terms/\"><url><loc>a</loc><lastmod>2001-01-01T00:00:00Z</lastmod><rs:size>1234</rs:size></url><url><loc>b</loc><lastmod>2002-02-02T00:00:00Z</lastmod><rs:size>56789</rs:size></url></urlset>")
def test5_add_iterable(self): r1 = Resource(uri='a',size=1) r2 = Resource(uri='b',size=2) i = ResourceList() i.add( [r1,r2] ) self.assertRaises( ResourceListDupeError, i.add, r1) self.assertRaises( ResourceListDupeError, i.add, r2) # allow dupes r1d = Resource(uri='a',size=10) i.add( [r1d] ,replace=True) self.assertEqual( len(i), 2 ) self.assertEqual( i.resources['a'].size, 10 )
def test7_iter(self): i = ResourceList() i.add( Resource('a',timestamp=1) ) i.add( Resource('b',timestamp=2) ) i.add( Resource('c',timestamp=3) ) i.add( Resource('d',timestamp=4) ) resources=[] for r in i: resources.append(r) self.assertEqual(len(resources), 4) self.assertEqual( resources[0].uri, 'a') self.assertEqual( resources[3].uri, 'd')
def test4_added(self): src = ResourceList() src.add( Resource('a',timestamp=1) ) src.add( Resource('b',timestamp=2) ) src.add( Resource('c',timestamp=3) ) src.add( Resource('d',timestamp=4) ) dst = ResourceList() dst.add( Resource('a',timestamp=1) ) dst.add( Resource('c',timestamp=3) ) ( same, changed, deleted, added ) = dst.compare(src) self.assertEqual( len(same), 2, "2 things unchanged" ) self.assertEqual( len(changed), 0, "nothing changed" ) self.assertEqual( len(deleted), 0, "nothing deleted" ) self.assertEqual( len(added), 2, "b and d added" ) i = iter(added) self.assertEqual( i.next().uri, 'b', "first was b" ) self.assertEqual( i.next().uri, 'd', "second was d" )
def test6_has_md5(self): r1 = Resource(uri='a') r2 = Resource(uri='b') i = ResourceList() self.assertFalse( i.has_md5() ) i.add(r1) i.add(r2) self.assertFalse( i.has_md5() ) r1.md5="aabbcc" self.assertTrue( i.has_md5() )
def test5_add_changed_resources(self): added = ResourceList() added.add( Resource('a',timestamp=1) ) added.add( Resource('d',timestamp=4)) self.assertEqual(len(added), 2, "2 things in added resourcelist") changes = ChangeList() changes.add_changed_resources( added, change='created' ) self.assertEqual(len(changes), 2, "2 things added") i = iter(changes) first = i.next() self.assertEqual(first.uri, 'a', "changes[0].uri=a") self.assertEqual(first.timestamp, 1, "changes[0].timestamp=1") self.assertEqual(first.change, 'created') #, "changes[0].change=created") second = i.next() self.assertEqual(second.timestamp, 4, "changes[1].timestamp=4") self.assertEqual(second.change, 'created', "changes[1].change=created") # Now add some with updated (one same, one diff) updated = ResourceList() updated.add( Resource('a',timestamp=5) ) updated.add( Resource('b',timestamp=6)) self.assertEqual(len(updated), 2, "2 things in updated resourcelist") changes.add_changed_resources( updated, change='updated' ) self.assertEqual(len(changes), 4, "4 = 2 old + 2 things updated") # Make new resourcelist from the changes which should not have dupes dst = ResourceList() dst.add( changes, replace=True ) self.assertEqual(len(dst), 3, "3 unique resources") self.assertEqual(dst.resources['a'].timestamp, 5 ) # 5 was later in last the 1 self.assertEqual(dst.resources['a'].change, 'updated') self.assertEqual(dst.resources['b'].timestamp, 6) self.assertEqual(dst.resources['b'].change, 'updated') self.assertEqual(dst.resources['d'].timestamp, 4) self.assertEqual(dst.resources['d'].change, 'created')