db: Add a Tag object

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-08-17 16:07:31 -04:00
parent 2f8e71fff7
commit 3753b0ad60
2 changed files with 51 additions and 0 deletions

View File

@ -13,6 +13,21 @@ class Row(GObject.GObject):
def do_get_column(self, column): raise NotImplementedError
def get_column(self, column):
return self.do_get_column(column).fetchone()[column]
class Tag(Row):
def __gt__(self, rhs): return self.sort > rhs.sort
def __lt__(self, rhs): return self.sort < rhs.sort
def __str__(self): return self.name
@GObject.Property
def name(self): return self.get_column("name")
@GObject.Property
def sort(self): return self.get_column("sort")
class Table(GObject.GObject):
def __init__(self, name, type):

View File

@ -22,6 +22,42 @@ class TestRow(unittest.TestCase):
row.do_get_column("test")
class FakeTagCursor:
def __init__(self, col, text):
self.col = col
self.text = text
def fetchone(self): return { self.col : self.text }
class FakeTag(objects.Tag):
def __init__(self, tid, name, sort):
objects.Tag.__init__(self, tid)
self.fake_name = name
self.fake_sort = sort
def do_get_column(self, column):
if column == "name":
return FakeTagCursor(column, self.fake_name)
return FakeTagCursor(column, self.fake_sort)
class TestTag(unittest.TestCase):
def test_tag(self):
a = FakeTag(1, "A", "a")
b = FakeTag(1, "B", "b")
self.assertIsInstance(a, objects.Tag)
self.assertEqual(a.name, "A")
self.assertEqual(a.sort, "a")
self.assertEqual(str(a), "A")
self.assertEqual(a.get_property("name"), "A")
self.assertEqual(a.get_property("sort"), "a")
self.assertTrue(a < b)
self.assertTrue(b > a)
self.assertFalse(a > b)
self.assertFalse(b < a)
class FakeTable(objects.Table):
def do_create(self): self.create_called = True
def do_insert(self, insert, args): return FakeCursor(1)