# Copyright 2021 (c) Anna Schumaker. from . import tagrow from gi.repository import Gtk, Pango import unittest class FakeTag: def __init__(self, name): self.name = name self.num = 0 def __len__(self): return self.num def __lt__(self, rhs): return self.name < rhs.name class TestTagRow(unittest.TestCase): def test_tag_row_init(self): tag = FakeTag("test") row = tagrow.TagRow(tag, "missing-icon") self.assertIsInstance(row, Gtk.ListBoxRow) self.assertIsInstance(row.grid, Gtk.Grid) self.assertIsInstance(row.label, Gtk.Label) self.assertEqual(row.image.get_icon_name(), "missing-icon") self.assertEqual(row.image.get_margin_start(), 5) self.assertEqual(row.image.get_margin_end(), 5) self.assertEqual(row.grid.get_margin_end(), 5) self.assertEqual(row.label.get_text(), "test\n0 Tracks") self.assertEqual(row.label.get_halign(), Gtk.Align.START) self.assertEqual(row.label.get_ellipsize(), Pango.EllipsizeMode.MIDDLE) self.assertTrue(row.label.get_hexpand()) self.assertIn(row.image, row.grid) self.assertIn(row.label, row.grid) self.assertEqual(row.get_child(), row.grid) def test_tag_row_count(self): tag = FakeTag("test") row = tagrow.TagRow(tag, "missing-icon") tag.num = 1 row.set_label() self.assertEqual(row.label.get_text(), "test\n1 Track") tag.num = 4 row.set_label() self.assertEqual(row.label.get_text(), "test\n4 Tracks") class TestParentTagRow(unittest.TestCase): def test_parent_tagrow_init(self): tag = FakeTag("test") row = tagrow.ParentTagRow(tag, "missing-icon") self.assertIsInstance(row, tagrow.TagRow) self.assertIsInstance(row.expander, Gtk.ToggleButton) self.assertEqual(row.expander.get_icon_name(), "pan-end-symbolic") self.assertEqual(row.children, [ ]) self.assertTrue(row.expander.has_css_class("flat")) self.assertIn(row.expander, row.grid) def test_parent_tagrow_children(self): tag = FakeTag("test") row = tagrow.ParentTagRow(tag, "missing-icon") c1 = Gtk.Label.new(str="Child 1") row.add_child(c1) self.assertEqual(row.children, [ c1 ]) self.assertFalse(c1.is_visible()) row.expander.set_active(True) self.assertEqual(row.expander.get_icon_name(), "pan-down-symbolic") self.assertTrue(c1.is_visible()) c2 = Gtk.Label.new(str="Child 2") row.add_child(c2) self.assertEqual(row.children, [ c1, c2 ]) row.expander.set_active(False) self.assertEqual(row.expander.get_icon_name(), "pan-end-symbolic") self.assertFalse(c1.is_visible()) self.assertFalse(c2.is_visible()) class TestTagHeader(unittest.TestCase): def test_tag_header(self): header = tagrow.TagHeader("A") self.assertIsInstance(header, Gtk.Box) self.assertIsInstance(header.label, Gtk.Label) self.assertIsInstance(header.separator, Gtk.Separator) self.assertEqual(header.label.get_text(), "A") self.assertEqual(header.get_margin_top(), 5) self.assertIn(header.label, header) self.assertIn(header.separator, header)