Merge pull request #55 from wheresmyjetpack/tests

A few tests
This commit is contained in:
Arun Prakash Jana 2016-08-23 12:15:55 +05:30 committed by GitHub
commit ff07e3a99b
2 changed files with 68 additions and 11 deletions

34
buku
View File

@ -446,6 +446,21 @@ class BukuDb:
:tag_manual: string of comma-separated tags to add manually
"""
self.select_tags_from_bookmarks(index)
resultset = self.cur.fetchall()
for row in resultset:
tags = '%s%s' % (row[1], tag_manual[1:])
tags = parse_tags([tags])
self.cur.execute('UPDATE bookmarks SET tags = ? WHERE id = ?', (tags, row[0],))
self.conn.commit()
def select_tags_from_bookmarks(self, index):
""" Select either the tags for one bookmark or all bookmarks
:param index: int position of record, 0 for all
"""
if index == 0:
resp = input('Tags will be appended for ALL bookmarks. Enter \x1b[1my\x1b[21m to confirm: ')
if resp != 'y':
@ -455,14 +470,6 @@ class BukuDb:
else:
self.cur.execute('SELECT id, tags FROM bookmarks WHERE id = ?', (index,))
resultset = self.cur.fetchall()
for row in resultset:
tags = '%s%s' % (row[1], tag_manual[1:])
tags = parse_tags([tags])
self.cur.execute('UPDATE bookmarks SET tags = ? WHERE id = ?', (tags, row[0],))
self.conn.commit()
def delete_tag_at_index(self, index, tag_manual):
""" Delete tags for bookmark at index
@ -723,8 +730,7 @@ class BukuDb:
print('No bookmarks deleted')
return
self.cur.execute('DROP TABLE if exists bookmarks')
self.conn.commit()
self.delete_all_bookmarks()
print('All bookmarks deleted')
else: # Remove a single entry
try:
@ -738,6 +744,14 @@ class BukuDb:
except IndexError:
logger.error('Index out of bound')
def delete_all_bookmarks(self):
"""Should only be called inside of delete_bookmark
Drops the bookmark table if it exists
"""
self.cur.execute('DROP TABLE if exists bookmarks')
self.conn.commit()
def print_bookmark(self, index, empty=False):
"""Print bookmark details at index or all bookmarks if index is 0
Print only bookmarks with blank title or tag if empty is True

View File

@ -102,6 +102,22 @@ class TestBukuDb(unittest.TestCase):
curr.close()
conn.close()
# @unittest.skip('skipping')
def test_get_bookmark_by_index(self):
bdb = BukuDb()
for bookmark in self.bookmarks:
# adding bookmark from self.bookmarks
bdb.add_bookmark(*bookmark)
# the expected bookmark
expected = (1, 'http://slashdot.org', 'SLASHDOT', ',news,old,',
"News for old nerds, stuff that doesn't matter")
bookmark_from_db = bdb.get_bookmark_by_index(1)
# asserting bookmark matches expected
self.assertEqual(expected, bookmark_from_db)
# asserting None returned if index out of range
self.assertIsNone(bdb.get_bookmark_by_index( len(self.bookmarks[0]) + 1 ))
# @unittest.skip('skipping')
def test_get_bookmark_index(self):
bdb = BukuDb()
@ -151,6 +167,24 @@ class TestBukuDb(unittest.TestCase):
for pair in zip(from_db[1:], new_values):
self.assertEqual(*pair)
# @unittest.skip('skipping')
def test_append_tag_at_index(self):
bdb = BukuDb()
for bookmark in self.bookmarks:
bdb.add_bookmark(*bookmark)
# tags to add
old_tags = bdb.get_bookmark_by_index(1)[3]
new_tags = ",foo,bar,baz"
bdb.append_tag_at_index(1, new_tags)
# updated list of tags
from_db = bdb.get_bookmark_by_index(1)[3]
# checking if new tags were added to the bookmark
self.assertTrue(any( x in new_tags.split(',') for x in from_db.split(',') ))
# checking if old tags still exist
self.assertTrue(any( x in old_tags.split(',') for x in from_db.split(',') ))
# @unittest.skip('skipping')
def test_refreshdb(self):
bdb = BukuDb()
@ -178,7 +212,16 @@ class TestBukuDb(unittest.TestCase):
from_db = bdb.get_bookmark_by_index(index)
self.assertIsNone(from_db)
# TODO: test deleting all bookmarks (index == 0)
# @unittest.skip('skipping')
def test_delete_all_bookmarks(self):
bdb = BukuDb()
# adding bookmarks
bdb.add_bookmark(*self.bookmarks[0])
# deleting all bookmarks
bdb.delete_all_bookmarks()
# assert table has been dropped
with self.assertRaises(sqlite3.OperationalError):
bdb.get_bookmark_by_index(0)
# @unittest.skip('skipping')
def test_replace_tag(self):