2021-11-02 16:08:56 -04:00
|
|
|
# Copyright 2021 (c) Anna Schumaker.
|
2021-12-28 15:48:06 -05:00
|
|
|
import audio
|
2021-11-03 10:57:21 -04:00
|
|
|
import db
|
2021-11-02 16:08:56 -04:00
|
|
|
import lib
|
|
|
|
import unittest
|
2021-11-03 10:57:21 -04:00
|
|
|
from gi.repository import Gtk
|
2021-11-02 16:08:56 -04:00
|
|
|
from . import header
|
|
|
|
from . import model
|
2021-11-08 16:11:08 -05:00
|
|
|
from . import view
|
2021-11-02 16:08:56 -04:00
|
|
|
|
|
|
|
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())
|
2021-11-03 10:57:21 -04:00
|
|
|
|
|
|
|
|
|
|
|
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())
|
2021-11-08 16:11:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
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())
|
2021-11-03 11:40:12 -04:00
|
|
|
|
|
|
|
|
2021-12-28 15:48:06 -05:00
|
|
|
class TestFavoriteButton(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
db.reset()
|
|
|
|
audio.Player.track = None
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
fav = header.FavoriteButton()
|
|
|
|
self.assertIsInstance(fav, Gtk.ToggleButton)
|
|
|
|
self.assertEqual(fav.get_icon_name(), "emmental-favorites")
|
|
|
|
self.assertFalse(fav.get_sensitive())
|
|
|
|
|
|
|
|
def test_sensitive(self):
|
|
|
|
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
|
|
|
fav = header.FavoriteButton()
|
|
|
|
fav.track_changed(audio.Player, None, track)
|
|
|
|
self.assertTrue(fav.get_sensitive())
|
|
|
|
fav.track_changed(audio.Player, None, None)
|
|
|
|
self.assertFalse(fav.get_sensitive())
|
|
|
|
|
|
|
|
def test_active(self):
|
|
|
|
fav = header.FavoriteButton()
|
|
|
|
t1 = db.make_fake_track(1, 1, "Test Track 1", "/a/b/c/1.ogg")
|
|
|
|
t2 = db.make_fake_track(2, 2, "Test Track 2", "/a/b/c/2.ogg")
|
|
|
|
db.user.Table.find("Favorites").add_track(t1)
|
|
|
|
|
|
|
|
fav.track_changed(audio.Player, None, t1)
|
|
|
|
self.assertTrue(fav.get_active())
|
|
|
|
fav.track_changed(audio.Player, t1, t2)
|
|
|
|
self.assertFalse(fav.get_active())
|
|
|
|
|
|
|
|
def test_toggle(self):
|
|
|
|
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
|
|
|
fav = header.FavoriteButton()
|
|
|
|
|
|
|
|
fav.set_active(True)
|
|
|
|
self.assertEqual(db.user.Table.find("Favorites").get_n_tracks(), 0)
|
|
|
|
fav.set_active(False)
|
|
|
|
|
|
|
|
audio.Player.track = track
|
|
|
|
self.assertNotIn(track, db.user.Table.find("Favorites").get_tracks())
|
|
|
|
fav.set_active(True)
|
|
|
|
self.assertIn(track, db.user.Table.find("Favorites").get_tracks())
|
|
|
|
fav.set_active(False)
|
|
|
|
self.assertNotIn(track, db.user.Table.find("Favorites").get_tracks())
|
|
|
|
|
|
|
|
|
2021-11-22 11:33:20 -05:00
|
|
|
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())
|
|
|
|
|
|
|
|
|
2021-11-03 11:40:12 -04:00
|
|
|
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"))
|
|
|
|
|
2021-12-28 13:50:51 -05:00
|
|
|
|
2021-12-28 15:20:58 -05:00
|
|
|
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()
|
2021-12-28 15:48:06 -05:00
|
|
|
self.assertIsInstance(child, header.FavoriteButton)
|
|
|
|
|
|
|
|
child = child.get_next_sibling()
|
2021-12-28 15:20:58 -05:00
|
|
|
self.assertIsInstance(child, header.JumpButton)
|
|
|
|
self.assertEqual(box.get_jump_button(), child)
|
|
|
|
|
|
|
|
|
2021-12-28 13:50:51 -05:00
|
|
|
class TestPlaylistBox(unittest.TestCase):
|
|
|
|
def test_init(self):
|
|
|
|
box = header.PlaylistBox()
|
|
|
|
self.assertIsInstance(box, header.ControlBox)
|
|
|
|
|
2021-11-03 11:40:12 -04:00
|
|
|
def test_children(self):
|
|
|
|
collection = db.user.Table.find("Collection")
|
2021-12-28 13:50:51 -05:00
|
|
|
box = header.PlaylistBox()
|
2021-11-03 11:40:12 -04:00
|
|
|
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)
|
2021-11-03 11:46:34 -04:00
|
|
|
|
|
|
|
|
|
|
|
class TestHeader(unittest.TestCase):
|
|
|
|
def test_init(self):
|
|
|
|
box = header.Header()
|
|
|
|
self.assertIsInstance(box, Gtk.Box)
|
2021-11-22 11:33:20 -05:00
|
|
|
self.assertIsInstance(box.get_jump_button(), header.JumpButton)
|
2021-11-03 11:46:34 -04:00
|
|
|
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()
|
2021-12-28 15:20:58 -05:00
|
|
|
self.assertIsInstance(child, header.TrackBox)
|
|
|
|
|
|
|
|
child = child.get_next_sibling()
|
2021-11-03 11:46:34 -04:00
|
|
|
self.assertIsInstance(child, header.FilterEntry)
|
|
|
|
|
|
|
|
child = child.get_next_sibling()
|
|
|
|
self.assertIsInstance(child, header.ControlBox)
|
|
|
|
self.assertEqual(child.get_first_child().playlist, collection)
|