# Copyright 2021 (c) Anna Schumaker. from . import controls from . import filter from . import popover from gi.repository import Gtk import tagdb import unittest class TestPlaylistControls(unittest.TestCase): def test_playlist_controls_init(self): ctrl = controls.Controls() self.assertIsInstance(ctrl, Gtk.Box) self.assertIsInstance(ctrl.search, Gtk.SearchEntry) self.assertIsInstance(ctrl.random, Gtk.ToggleButton) self.assertIsInstance(ctrl.loop, Gtk.ToggleButton) self.assertIsInstance(ctrl.add_popover, popover.AddPopover) self.assertIsInstance(ctrl.add, Gtk.MenuButton) self.assertIsInstance(ctrl.filter, filter.Filter) self.assertEqual(ctrl.random.get_icon_name(), "media-playlist-shuffle") self.assertEqual(ctrl.loop.get_icon_name(), "media-playlist-repeat") self.assertEqual(ctrl.add.get_icon_name(), "list-add") self.assertEqual(ctrl.add.get_popover(), ctrl.add_popover) self.assertEqual(ctrl.search.get_property("placeholder-text"), "Type to filter tracks") self.assertTrue(ctrl.has_css_class("linked")) self.assertTrue(ctrl.search.get_hexpand()) self.assertIn(ctrl.search, ctrl) self.assertIn(ctrl.random, ctrl) self.assertIn(ctrl.loop, ctrl) self.assertIn(ctrl.add, ctrl) def test_playlist_controls_set_tag(self): ctrl = controls.Controls() fav = tagdb.tags.User["Favorites"] prev = tagdb.tags.User["Previous"] self.assertIsNone(ctrl.tag) self.assertFalse(ctrl.random.get_sensitive()) self.assertFalse(ctrl.random.get_active()) self.assertFalse(ctrl.loop.get_sensitive()) self.assertFalse(ctrl.loop.get_active()) self.assertFalse(ctrl.add.get_sensitive()) fav.random = True fav.loop = True ctrl.set_tag(fav) self.assertEqual(ctrl.tag, fav) self.assertTrue(ctrl.random.get_sensitive()) self.assertTrue(ctrl.random.get_active()) self.assertTrue(ctrl.loop.get_sensitive()) self.assertTrue(ctrl.loop.get_active()) self.assertTrue(ctrl.add.get_sensitive()) ctrl.set_tag(prev) self.assertEqual(ctrl.tag, prev) self.assertFalse(ctrl.random.get_sensitive()) self.assertFalse(ctrl.random.get_active()) self.assertFalse(ctrl.loop.get_sensitive()) self.assertFalse(ctrl.loop.get_active()) self.assertTrue(ctrl.add.get_sensitive())