emmental/playlist/test_header.py

198 lines
7.1 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
import db
import lib
import unittest
from gi.repository import Gtk
from . import header
from . import model
from . import view
class TestFilterEntry(unittest.TestCase):
def test_init(self):
entry = header.FilterEntry()
self.assertIsInstance(entry, lib.filter.Entry)
self.assertEqual(entry.filter, model.PlaylistFilter)
self.assertEqual(entry.get_margin_start(), 200)
self.assertEqual(entry.get_margin_end(), 200)
self.assertTrue(entry.get_hexpand())
class TestPropertyToggle(unittest.TestCase):
def test_init(self):
prop = header.PropertyToggle("random", "media-playlist-shuffle")
self.assertIsInstance(prop, Gtk.ToggleButton)
self.assertEqual(prop.get_icon_name(), "media-playlist-shuffle")
self.assertFalse(prop.get_sensitive())
self.assertEqual(prop.property, "random")
self.assertIsNone(prop.playlist)
prop.set_active(True)
def test_set_playlist(self):
collection = db.user.Table.find("Collection")
prop = header.PropertyToggle("random", "media-playlist-shuffle")
collection.set_property("random", True)
prop.set_playlist(collection)
self.assertEqual(prop.playlist, collection)
self.assertTrue(prop.get_active())
self.assertFalse(prop.get_sensitive())
collection.set_property("random", False)
prop.set_playlist(collection)
self.assertFalse(prop.get_active())
def test_toggle(self):
collection = db.user.Table.find("Collection")
prop = header.PropertyToggle("random", "media-playlist-shuffle")
collection.set_property("random", False)
prop.set_playlist(collection)
prop.set_active(True)
self.assertTrue(collection.get_property("random"))
prop.set_active(False)
self.assertFalse(collection.get_property("random"))
class TestRandomToggle(unittest.TestCase):
def test_init(self):
random = header.RandomToggle()
self.assertIsInstance(random, header.PropertyToggle)
self.assertEqual(random.get_icon_name(), "media-playlist-shuffle")
self.assertEqual(random.property, "random")
def test_set_playlist(self):
random = header.RandomToggle()
random.set_playlist(db.user.Table.find("Collection"))
self.assertTrue(random.get_sensitive())
random.set_playlist(db.user.Table.find("Previous"))
self.assertFalse(random.get_sensitive())
class TestLoopToggle(unittest.TestCase):
def test_init(self):
loop = header.LoopToggle()
self.assertIsInstance(loop, header.PropertyToggle)
self.assertEqual(loop.get_icon_name(), "media-playlist-repeat")
self.assertEqual(loop.property, "loop")
def test_set_playlist(self):
loop = header.LoopToggle()
loop.set_playlist(db.user.Table.find("Collection"))
self.assertFalse(loop.get_sensitive())
loop.set_playlist(db.user.Table.find("Favorites"))
self.assertTrue(loop.get_sensitive())
loop.set_playlist(db.user.Table.find("New Tracks"))
self.assertTrue(loop.get_sensitive())
loop.set_playlist(db.user.Table.find("Previous"))
self.assertFalse(loop.get_sensitive())
loop.set_playlist(db.user.Table.find("Queued Tracks"))
self.assertFalse(loop.get_sensitive())
class TestSortButton(unittest.TestCase):
def test_init(self):
sort = header.SortButton()
self.assertIsInstance(sort, Gtk.MenuButton)
self.assertIsInstance(sort.get_popover(), Gtk.Popover)
self.assertIsInstance(sort.get_popover(), view.SortOrderPopover)
self.assertEqual(sort.get_icon_name(), "view-sort-ascending")
self.assertFalse(sort.get_sensitive())
def test_set_playlist(self):
sort = header.SortButton()
sort.set_playlist(db.user.Table.find("Collection"))
self.assertTrue(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("Favorites"))
self.assertTrue(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("New Tracks"))
self.assertTrue(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("Previous"))
self.assertFalse(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("Queued Tracks"))
self.assertTrue(sort.get_sensitive())
class TestJumpButton(unittest.TestCase):
def test_init(self):
jump = header.JumpButton()
self.assertIsInstance(jump, Gtk.Button)
self.assertEqual(jump.get_icon_name(), "go-jump")
self.assertFalse(jump.get_sensitive())
def test_set_playlist(self):
jump = header.JumpButton()
self.assertFalse(jump.get_sensitive())
jump.set_playlist(db.user.Table.find("Collection"))
self.assertTrue(jump.get_sensitive())
class TestControlBox(unittest.TestCase):
def test_init(self):
box = header.ControlBox()
self.assertIsInstance(box, Gtk.Box)
self.assertEqual(box.get_orientation(), Gtk.Orientation.HORIZONTAL)
self.assertEqual(box.get_margin_top(), 5)
self.assertEqual(box.get_margin_bottom(), 5)
self.assertEqual(box.get_margin_start(), 5)
self.assertEqual(box.get_margin_end(), 5)
self.assertTrue(box.has_css_class("linked"))
class TestTrackBox(unittest.TestCase):
def test_init(self):
box = header.TrackBox()
self.assertIsInstance(box, header.ControlBox)
def test_children(self):
box = header.TrackBox()
child = box.get_first_child()
self.assertIsInstance(child, header.JumpButton)
self.assertEqual(box.get_jump_button(), child)
class TestPlaylistBox(unittest.TestCase):
def test_init(self):
box = header.PlaylistBox()
self.assertIsInstance(box, header.ControlBox)
def test_children(self):
collection = db.user.Table.find("Collection")
box = header.PlaylistBox()
box.set_playlist(collection)
child = box.get_first_child()
self.assertIsInstance(child, header.RandomToggle)
self.assertEqual(child.playlist, collection)
child = child.get_next_sibling()
self.assertIsInstance(child, header.LoopToggle)
self.assertEqual(child.playlist, collection)
child = child.get_next_sibling()
self.assertIsInstance(child, header.SortButton)
class TestHeader(unittest.TestCase):
def test_init(self):
box = header.Header()
self.assertIsInstance(box, Gtk.Box)
self.assertIsInstance(box.get_jump_button(), header.JumpButton)
self.assertEqual(box.get_orientation(), Gtk.Orientation.HORIZONTAL)
def test_children(self):
collection = db.user.Table.find("Collection")
box = header.Header()
box.set_playlist(collection)
child = box.get_first_child()
self.assertIsInstance(child, header.TrackBox)
child = child.get_next_sibling()
self.assertIsInstance(child, header.FilterEntry)
child = child.get_next_sibling()
self.assertIsInstance(child, header.ControlBox)
self.assertEqual(child.get_first_child().playlist, collection)