--- a/lib/my_db.py Wed Dec 31 00:07:25 2008 -0500
+++ b/lib/my_db.py Wed Dec 31 01:00:21 2008 -0500
@@ -275,6 +275,21 @@
if not res:
res = [[0,0]]
return res
+ def map_keywords(self, kws):
+ """Return a dictionnary of keywords and their ids."""
+ qry = """SELECT k.id, k.name
+ FROM keywords k
+ WHERE k.userid = %d """ % self.userid
+ qry += " AND ( k.name = %s " % sql_quote(kws[0])
+ for kw in kws[1:]:
+ qry += " OR k.name = %s " % sql_quote(kw)
+ qry += ");"
+ self.crs.execute(qry)
+ res = dict((kw, -1) for kw in kws)
+ for id, name in self.crs.fetchall():
+ res[name] = id
+ return res
+
def _bookmarks_selection(self, has_kw = [0], except_kw = []):
"""
Return a bookmarks selection query used in at least two function.
@@ -316,6 +331,7 @@
qry += "GROUP BY keyword ORDER BY keyword;"
self.crs.execute(qry)
return self.crs.fetchall()
+ # Folders related functionnality
def get_folder_keyword(self, id):
self.crs.execute("""
SELECT k.id, k.name
--- a/tests/lib/test_my_db.py Wed Dec 31 00:07:25 2008 -0500
+++ b/tests/lib/test_my_db.py Wed Dec 31 01:00:21 2008 -0500
@@ -4,36 +4,55 @@
import pgdb
class TestMyDbConnexion(unittest.TestCase):
- def setUp(self):
- " Setup a test-db environment."
- self.db = my_db.connect(testconfig.CONFIG, "test")
- self.prefs = { 'keywords_box' : 10,
- 'keywords_sort' : 'count',
- 'keywords_reverse': True,
- 'fullname': 'Test User',
- 'default_view': 1 }
-
- def tearDown(self):
- " Tear down the test-db environment"
- self.db.delete_user(self.db.userid)
- pass
+ def setUp(self):
+ " Setup a test-db environment."
+ self.db = my_db.connect(testconfig.CONFIG, "test")
+ self.prefs = { 'keywords_box' : 10,
+ 'keywords_sort' : 'count',
+ 'keywords_reverse': True,
+ 'fullname': 'Test User',
+ 'default_view': 1 }
+
+ def tearDown(self):
+ " Tear down the test-db environment"
+ self.db.delete_user(self.db.userid)
+
+ def testConnect(self):
+ self.assertNotEqual(self.db, None)
+ self.assertNotEqual(self.db.userid, -1)
+
+ def testGetPreferences(self):
+ prefs = self.db.get_preferences()
+ keys = prefs.keys()
+ keys.sort()
+ expKeys = self.prefs.keys()
+ expKeys.sort()
+ self.assertEqual(expKeys, keys)
- def testConnect(self):
- self.assertNotEqual(self.db, None)
- self.assertNotEqual(self.db.userid, -1)
+ def testSetPreferences(self):
+ self.db.set_preferences(self.prefs)
+ prefs = self.db.get_preferences()
+ self.assertEqual(prefs, self.prefs)
+
+ def testAddKeyword(self):
+ kw = self.db.add_keyword('keyword')
+ self.assertEqual(self.db.get_keyword(kw), 'keyword')
- def testGetPreferences(self):
- prefs = self.db.get_preferences()
- keys = prefs.keys()
- keys.sort()
- expKeys = self.prefs.keys()
- expKeys.sort()
- self.assertEqual(expKeys, keys)
+ def testRemoveKeyword(self):
+ kw = self.db.add_keyword('keyword')
+ self.db.remove_keyword(kw)
+ kws = self.db.get_all_keywords()
+ # There is always '--' by default
+ self.assertEqual(len(kws), 1)
- def testSetPreferences(self):
- self.db.set_preferences(self.prefs)
- prefs = self.db.get_preferences()
- self.assertEqual(prefs, self.prefs)
+ def testMapKeywords(self):
+ kws = ('kw1', 'kw2', 'kw3', 'kw4')
+ kwids = map(self.db.add_keyword, kws[:-1])
+ expected_map = { kws[-1]: -1 }
+ for kw, id in zip(kws[:-1], kwids):
+ expected_map[kw] = id
+ kw_map = self.db.map_keywords(kws)
+ self.assertEqual(expected_map, kw_map)
if __name__ == '__main__':
unittest.main()