"""Tests for micronian.store.filesystem http://www.decafbad.com mailto:l.m.orchard@pobox.com Share and Enjoy """ from random import random import unittest from micronian.page import Page from micronian.store.filesystem import FilesystemStore class TestCase(unittest.TestCase): STORE_ROOT = "data/test" def setUp(self): """Create some reusable objects for tests.""" self.fs = FilesystemStore(self.STORE_ROOT) self.p1 = Page("""

This is a sample node added to the Page.

Here's some more.

Nothing to see here

Isn't this fun?

""") def tearDown(self): """ """ pass def testCreate(self): """Test result of FilesystemStore creation.""" fs = FilesystemStore(self.STORE_ROOT) def testStoreAndFetch(self): """Try storing and fetching a page.""" fs = self.fs tmp_name = 'TestPage%s' % (int(random()*100000)) def do_bad_fetch(x): fs.fetch(tmp_name) self.assertRaises(LookupError, do_bad_fetch, "Attempt to find non-existent page should raise an exception.") self.fs.store(tmp_name, self.p1) p2 = self.fs.fetch(tmp_name) self.assertEqual(p2['title'], tmp_name, "Stored page title should be %s, found %s." % \ (tmp_name, p2['title'])) self.assertEqual(self.p1.toString(), p2.toString(), "Stored page and fetched page should be equal.") def testExists(self): """Try checking the existence of a page.""" tmp_name = 'TestPage%s' % (int(random()*100000)) self.fs.store(tmp_name, self.p1) self.assert_(self.fs.exists(tmp_name), "Page %s should exist." % tmp_name) def testList(self): """Try storing some pages, then check if they're all listed.""" pages = [] for x in range(10): tmp_name = 'TestPage%s' % (int(random()*100000)) pages.append(tmp_name) self.fs.store(tmp_name, self.p1) list_pages = self.fs.list() for name in list_pages: if name in pages: pages.remove(name) self.assert_(len(pages) == 0, "All pages just stored (%s) should have been found in list (%s)" %\ (pages, list_pages)) def testDelete(self): """Try deleting a page.""" fs = self.fs tmp_name = 'TestPage%s' % (int(random()*100000)) def do_bad_delete(x): fs.delete(tmp_name) self.assertRaises(LookupError, do_bad_delete, "Attempt to find non-existent page should raise an exception.") self.fs.store(tmp_name, self.p1) self.assert_(tmp_name in self.fs.list(), "Page should have appeared in page list.") self.fs.delete(tmp_name) self.failIf(tmp_name in self.fs.list(), "Page should not have appeared in page list after deletion.") if __name__ == '__main__': unittest.main()