2021-10-11 17:10:50 -04:00
|
|
|
# Copyright 2021 (c) Anna Schumaker.
|
|
|
|
import datetime
|
|
|
|
import db
|
2021-10-11 22:08:33 -04:00
|
|
|
import lib
|
2021-10-11 17:10:50 -04:00
|
|
|
import unittest
|
|
|
|
from gi.repository import GObject
|
|
|
|
from gi.repository import Gio
|
2021-10-11 21:49:05 -04:00
|
|
|
from gi.repository import Gtk
|
2021-10-11 17:10:50 -04:00
|
|
|
from . import model
|
|
|
|
|
|
|
|
class TestChildModel(unittest.TestCase):
|
|
|
|
def items_changed(self, table, pos, rm, add):
|
|
|
|
self.changed = (pos, rm, add)
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
db.reset()
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
|
|
|
child = model.ChildModel(artist)
|
|
|
|
|
|
|
|
self.assertIsInstance(child, GObject.GObject)
|
|
|
|
self.assertIsInstance(child, Gio.ListModel)
|
|
|
|
|
|
|
|
self.assertEqual(child.parent, artist)
|
|
|
|
self.assertEqual(child.get_item_type(), GObject.TYPE_PYOBJECT)
|
|
|
|
self.assertEqual(child.get_n_items(), 0)
|
|
|
|
|
|
|
|
def test_children(self):
|
|
|
|
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
|
|
|
child = model.ChildModel(artist)
|
|
|
|
child.connect("items-changed", self.items_changed)
|
|
|
|
|
|
|
|
album = artist.find_album("Test Album", datetime.date.today())
|
|
|
|
self.assertEqual(child.get_n_items(), 1)
|
|
|
|
self.assertEqual(child.get_item(0), album)
|
|
|
|
self.assertEqual(self.changed, (0, 0, 1))
|
2021-10-11 21:49:05 -04:00
|
|
|
|
|
|
|
|
|
|
|
class TestTreeListModel(unittest.TestCase):
|
|
|
|
def test_init(self):
|
|
|
|
tree = model.TreeListModel(db.artist.Table)
|
|
|
|
self.assertIsInstance(tree, Gtk.TreeListModel)
|
|
|
|
self.assertEqual(tree.get_model(), db.artist.Table)
|
|
|
|
self.assertFalse(tree.get_autoexpand())
|
|
|
|
self.assertFalse(tree.get_passthrough())
|
|
|
|
|
|
|
|
def test_create_child_func(self):
|
|
|
|
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
|
|
|
child = model.create_child_func(artist)
|
|
|
|
self.assertEqual(child.parent, artist)
|
|
|
|
|
|
|
|
genre = db.genre.Table.find("Test Genre")
|
|
|
|
self.assertIsNone(model.create_child_func(genre))
|
2021-10-11 22:08:33 -04:00
|
|
|
|
|
|
|
|
|
|
|
class TestFilterTableModel(unittest.TestCase):
|
|
|
|
def tearDown(self):
|
|
|
|
model.TableFilter.set_pattern("")
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
filter = model.FilterTableModel(db.artist.Table)
|
|
|
|
self.assertIsInstance(filter, Gtk.FilterListModel)
|
|
|
|
self.assertIsInstance(filter.get_model(), Gtk.TreeListModel)
|
|
|
|
self.assertEqual(filter.get_table(), db.artist.Table)
|
|
|
|
self.assertEqual(filter.get_filter(), model.TableFilter)
|
|
|
|
|
|
|
|
def test_filter(self):
|
|
|
|
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
|
|
|
album = artist.find_album("Test Album", datetime.date.today())
|
|
|
|
self.assertIsInstance(model.TableFilter, lib.filter.Regex)
|
|
|
|
|
|
|
|
model.TableFilter.set_pattern("Artist")
|
|
|
|
self.assertTrue(model.TableFilter.do_check(artist))
|
|
|
|
model.TableFilter.set_pattern("Album")
|
|
|
|
self.assertTrue(model.TableFilter.do_check(artist))
|
|
|
|
model.TableFilter.set_pattern("Disc")
|
|
|
|
self.assertFalse(model.TableFilter.do_check(artist))
|