#!/usr/bin/env python2.3
import pg
import pdb
import unittest
from Category import Category
from PageData import PageData
from storage.CSVStorage import CSVStorage
from Bookmark import Bookmark
from storage.RDBStorage import RDBStorage
class BookmarksTC(unittest.TestCase):
def setUp(self):
self.test_bm = {'id': None,
'page_url': '/home',
'category': 'Links',
'name': 'example',
'url': 'http://www.example.net' }
self.bm = Bookmark(**self.test_bm)
self.cat_names_list = ['Admin', 'Docs', 'Java', 'Links', 'Struts', 'Twisted Servers']
self.csv = CSVStorage(prepath="storage/")
self.testpage = '/home'
self.dbcnx = RDBStorage()
def tearDown(self):
try:
cnx = self.dbcnx._get_cnx()
cnx.query("DELETE from bookmark where name LIKE '%example%';")
self.csv.remove(self.bm)
except Exception, e:
pass
# --= Category Tests =--
class TestCategory(BookmarksTC):
def testCategory_id_dict(self):
catlist = self.dbcnx._get_Category_list_for_page(page_url=self.testpage)
for cat in catlist:
for bm in cat.bookmarks:
cat.locate_Bookmark(id=bm.id)
# --= Menu Tests =--
#class TestMenu(BookmarksTC):
#
# --= RDBStorage Tests =--
class Test_RDBStorage(BookmarksTC):
def test_get_PageData(self):
pagedata = self.dbcnx.get_PageData(self.testpage)
self.assert_(isinstance(pagedata, PageData))
for cat in pagedata.categories:
self.assert_(isinstance(cat, Category))
self.assert_(cat.bookmarks)
def test_get_Category_list_for_page(self):
cat_names_list = self.dbcnx._get_Category_list_for_page(self.testpage)
for cat in cat_names_list:
self.assert_(isinstance(cat, Category))
self.assert_(cat.bookmarks)
def test_get_category_names(self):
cat_names = self.dbcnx._get_category_names(self.testpage)
self.assertEqual(len(cat_names), len(self.cat_names_list))
for name in cat_names:
self.assert_(name in self.cat_names_list)
def test_dbcnx_add_Bookmark(self):
self.dbcnx.add_Bookmark(self.bm)
bookmarks = self.dbcnx.get_Bookmarks()
self.assert_(self.bm in bookmarks, "%s\n%s" %
(self.bm, [str(bm) for bm in bookmarks if bm.url == self.bm.url]))
def test_dbcnx_get_Bookmarks_in_specified_category(self):
for cat_name in self.cat_names_list:
bookmarks = self.dbcnx.get_Bookmarks(category=cat_name)
for bm in bookmarks:
self.assertEquals(bm.category, cat_name)
def test_dbcnx_get_Bookmarks_with_attr_in_specified_category_and_page(self):
for cat_name in self.cat_names_list:
bookmarks = self.dbcnx.get_Bookmarks(page_url="/home", category=cat_name)
for bm in bookmarks:
self.assertEquals(bm.page_url, '/home')
self.assertEquals(bm.category, cat_name)
def test_dbcnx_get_Bookmarks_with_attr(self):
self.dbcnx.add_Bookmark(self.bm)
result = self.dbcnx.get_Bookmarks(id=self.bm.id,
name=self.bm.name, url=self.bm.url,
category=self.bm.category,
TRACE=False)
self.assertEquals(self.bm, result)
# --= PageData Tests =--
#class TestPageData(BookmarksTC):
# def test_print_categories(self):
# categories = self.dbcnx.get_categories()
# fail = False
# for cat in categories:
# if cat not in self.page_data.categories:
# fail = True
# print cat
# self.assert_(fail)
# --= EditLinkData Tests =--
#class TestEditLinkData(BookmarksTC):
# def setUp(self):
# BookmarksTC.setUp(self)
# self.bm.add()
# self.eld = EditLinkData(id=self.bm.id)
#
# def tearDown(self):
# self.bm.delete()
# BookmarksTC.tearDown(self)
#
# def test_load(self):
# iter = self.bm.__dict__.iteritems()
# while True:
# try:
# key, value = iter.next()
# self.assert_(hasattr(self.eld, key))
# self.assertEquals(getattr(self.eld, key), getattr(self.bm, key))
# except StopIteration:
# break
# --= EditPageData Tests =--
#class TestEditPageData(BookmarksTC):
# def setUp(self):
# BookmarksTC.setUp(self)
# self.edit_page_data = EditPageData()
#
# def test_access(self):
# for bm in self.edit_page_data:
# self.assertEquals(bm.page_url, self.edit_page_data.page_url)
# --= Bookmark Tests =--
class TestBookmark(BookmarksTC):
def test_Bookmark_equals_Bookmark(self):
self.assertEquals(self.bm, Bookmark(**self.test_bm))
# --= PickleStorage tests =--
class TestCSVStorage(BookmarksTC):
def setUp(self):
BookmarksTC.setUp(self)
self.cat_names_list = ['Links','Docs']
def test_load_data(self):
for bm in self.csv.bookmarks:
self.assert_(self.csv.bookmarks.count(bm) == 1,'%s has multiple copies' % (bm) )
def test_get_Bookmarks(self):
bm = self.csv.get_Bookmarks(name="Something Awful")
self.assert_(isinstance(bm, Bookmark), 'bm is of type %s' % (type(bm)) )
self.assertEquals(bm.name, "Something Awful")
bm_list = self.csv.get_Bookmarks(category="Docs")
self.assert_(len(bm_list) > 0)
for bm in bm_list:
self.assertEquals(bm.category, 'Docs')
def test_add_delete_Bookmark(self):
orig_id_val = self.csv.id_val
self.csv.add_Bookmark(self.bm)
self.assertEqual(self.csv.id_val, orig_id_val + 1)
self.assert_(self.bm in self.csv.bookmarks)
self.csv.delete_Bookmark(self.bm)
self.assert_(self.bm not in self.csv.bookmarks)
def test_update_Bookmark(self):
pass
def test_get_PageData(self):
pagedata = self.csv.get_PageData(self.testpage)
self.assert_(isinstance(pagedata, PageData))
for cat in pagedata.categories:
self.assert_(isinstance(cat, Category))
self.assert_(cat.bookmarks)
def test_get_category_names(self):
cat_names = self.csv._get_category_names(self.testpage)
self.assertEqual(len(cat_names), len(self.cat_names_list))
for name in cat_names:
self.assert_(name in self.cat_names_list,
(self.bm, [str(bm) for bm in self.csv.bookmarks if bm.url == self.bm.url]))
def test_csv_get_Bookmarks_in_specified_category(self):
for cat_name in self.cat_names_list:
bookmarks = self.csv.get_Bookmarks(category=cat_name)
for bm in bookmarks:
self.assertEquals(bm.category, cat_name)
def test_csv_get_Bookmarks_with_attr_in_specified_category_and_page(self):
for cat_name in self.cat_names_list:
bookmarks = self.csv.get_Bookmarks(page_url="/home", category=cat_name)
for bm in bookmarks:
self.assertEquals(bm.page_url, '/home')
self.assertEquals(bm.category, cat_name)
# def test_csv_get_Bookmarks_with_attr(self):
# self.csv.add_Bookmark(self.bm)
# result = self.csv.get_Bookmarks(id=self.bm.id,
# name=self.bm.name, url=self.bm.url,
# category=self.bm.category,
# TRACE=False)
# self.assertEquals(self.bm, result)
if __name__ == "__main__":
unittest.main()
# vim:fdm=indent
syntax highlighted by Code2HTML, v. 0.9.1