emmental/sidebar/test_row.py

177 lines
6.6 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
import audio
import db
import unittest
from gi.repository import Gtk
from gi.repository import Pango
from . import row
from . import widgets
class TestLabel(unittest.TestCase):
def test_init(self):
label = row.Label()
self.assertIsInstance(label, Gtk.Label)
self.assertEqual(label.get_ellipsize(), Pango.EllipsizeMode.MIDDLE)
self.assertEqual(label.get_halign(), Gtk.Align.START)
self.assertTrue(label.get_hexpand())
def test_bold(self):
label = row.Label()
self.assertIsNone(label.get_attributes())
label.set_bold(True)
self.assertIsNotNone(label.get_attributes())
label.set_bold(False)
self.assertIsNone(label.get_attributes())
class TestGrid(unittest.TestCase):
def setUp(self): db.reset()
def test_init(self):
grid = row.Grid()
self.assertIsInstance(grid, Gtk.Grid)
self.assertIsInstance(grid.icon, Gtk.Image)
self.assertIsInstance(grid.name, row.Label)
self.assertIsInstance(grid.count, row.Label)
self.assertEqual(grid.get_column_spacing(), 5)
def test_attach(self):
grid = row.Grid()
self.assertEqual(grid.get_child_at(0, 0), grid.icon)
self.assertEqual(grid.get_child_at(1, 0), grid.name)
self.assertEqual(grid.get_child_at(1, 1), grid.count)
def test_set_item(self):
artist = db.artist.Table.find("Test Artist", "Test Sort")
grid = row.Grid()
grid.set_item(artist)
self.assertEqual(grid.icon.get_icon_name(), artist.icon_name)
self.assertEqual(grid.name.get_text(), "Test Artist")
self.assertEqual(grid.count.get_text(), "0 Tracks")
self.assertIsNone(grid.name.get_attributes())
self.assertIsNone(grid.count.get_attributes())
audio.Player.set_playlist(artist)
self.assertIsNotNone(grid.name.get_attributes())
self.assertIsNotNone(grid.count.get_attributes())
grid.unset_item(artist)
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
self.assertEqual(grid.count.get_text(), "0 Tracks")
def test_count_label(self):
artist = db.artist.Table.find("Test Artist", "Test Sort")
grid = row.Grid()
grid.set_item(artist)
self.assertEqual(grid.count.get_text(), "0 Tracks")
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
self.assertEqual(grid.count.get_text(), "1 Track")
grid.count.set_text("abcde")
artist.refresh()
self.assertEqual(grid.count.get_text(), "1 Track")
db.track.Table.delete(track)
artist.remove_track(track, False)
self.assertEqual(grid.count.get_text(), "0 Tracks")
class TestUserGrid(unittest.TestCase):
def tearDown(self): db.reset()
def test_init(self):
grid = row.UserGrid()
self.assertIsInstance(grid, row.Grid)
self.assertIsInstance(grid.remove, Gtk.Button)
self.assertEqual(grid.get_child_at(2, 0), grid.remove)
self.assertEqual(grid.remove.get_icon_name(), "list-remove")
self.assertEqual(grid.remove.get_halign(), Gtk.Align.CENTER)
self.assertEqual(grid.remove.get_valign(), Gtk.Align.CENTER)
self.assertTrue(grid.remove.has_css_class("flat"))
def test_set_item(self):
grid = row.UserGrid()
grid.set_item(db.user.Table.find("Collection"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Favorites"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("New Tracks"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Previous"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Queued Tracks"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Test Playlist"))
self.assertTrue(grid.remove.get_visible())
def test_click(self):
grid = row.UserGrid()
grid.set_item(db.user.Table.find("Test Playlist"))
grid.remove.emit("clicked")
self.assertIsNone(db.user.Table.lookup("Test Playlist"))
class TestLibraryGrid(unittest.TestCase):
def test_init(self):
grid = row.LibraryGrid()
self.assertIsInstance(grid, row.Grid)
self.assertIsInstance(grid.menu, Gtk.MenuButton)
self.assertEqual(grid.get_child_at(2, 0), grid.menu)
self.assertEqual(grid.menu.get_direction(), Gtk.ArrowType.LEFT)
self.assertEqual(grid.menu.get_halign(), Gtk.Align.CENTER)
self.assertEqual(grid.menu.get_valign(), Gtk.Align.CENTER)
self.assertTrue(grid.menu.has_css_class("flat"))
self.assertTrue(grid.menu.get_first_child().has_css_class("flat"))
self.assertIsNone(grid.menu.get_popover())
def test_set_item(self):
grid = row.LibraryGrid()
grid.set_item(db.library.Table.find("/a/b/c"))
self.assertIsInstance(grid.menu.get_popover(), widgets.LibraryPopover)
grid.unset_item(db.library.Table.find("/a/b/c"))
self.assertIsNone(grid.menu.get_popover())
class TestTreeRow(unittest.TestCase):
def test_init(self):
tree = row.TreeRow(row.Grid())
self.assertIsInstance(tree, Gtk.TreeExpander)
self.assertIsInstance(tree.get_child(), row.Grid)
def test_factory(self):
factory = row.TreeRowFactory()
self.assertIsInstance(factory, Gtk.SignalListItemFactory)
def test_user_factory(self):
factory = row.UserTreeRowFactory()
self.assertIsInstance(factory, Gtk.SignalListItemFactory)
self.assertIsInstance(row.Factory, row.TreeRowFactory)
def test_library_factory(self):
factory = row.LibraryTreeRowFactory()
self.assertIsInstance(factory, Gtk.SignalListItemFactory)
self.assertIsInstance(row.Factory, row.TreeRowFactory)
class TestUserRow(unittest.TestCase):
def test_init(self):
user = row.UserRow()
self.assertIsInstance(user, Gtk.Box)
self.assertIsInstance(user.icon, Gtk.Image)
self.assertIsInstance(user.name, row.Label)
self.assertEqual(user.get_spacing(), 5)
self.assertEqual(user.get_first_child(), user.icon)
self.assertEqual(user.get_last_child(), user.name)
def test_set_item(self):
user = row.UserRow()
user.set_item(db.user.Table.find("Favorites"))
self.assertEqual(user.icon.get_icon_name(), "emmental-favorites")
self.assertEqual(user.name.get_text(), "Favorites")
def test_factory(self):
factory = row.UserRowFactory()
self.assertIsInstance(factory, Gtk.SignalListItemFactory)