"""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()