121 lines
5.2 KiB
Python
121 lines
5.2 KiB
Python
# Copyright 2022 (c) Anna Schumaker.
|
|
"""Tests our Track ColumnView."""
|
|
import pathlib
|
|
import emmental.tracklist.trackview
|
|
import tests.util
|
|
from gi.repository import Gtk
|
|
|
|
|
|
class TestTrackView(tests.util.TestCase):
|
|
"""Tests the TrackView widget."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
super().setUp()
|
|
self.db_plist = self.sql.playlists.create("Test Playlist")
|
|
self.playlist = emmental.playlist.playlist.Playlist(self.sql,
|
|
self.db_plist)
|
|
self.trackview = emmental.tracklist.trackview.TrackView(self.sql)
|
|
|
|
self.library = self.sql.libraries.create(pathlib.Path("/a/b/"))
|
|
self.album = self.sql.albums.create("Test Album", "Artist", "2023")
|
|
self.medium = self.sql.media.create(self.album, "", number=1)
|
|
self.year = self.sql.years.create(2023)
|
|
self.track = self.sql.tracks.create(self.library,
|
|
pathlib.Path("/a/b/1.ogg"),
|
|
self.medium, self.year, length=10)
|
|
|
|
def test_init(self):
|
|
"""Test that the TrackView is initialized properly."""
|
|
self.assertIsInstance(self.trackview, Gtk.Frame)
|
|
self.assertIsInstance(self.trackview._scrollwin, Gtk.ScrolledWindow)
|
|
|
|
self.assertEqual(self.trackview.get_child(), self.trackview._scrollwin)
|
|
self.assertEqual(self.trackview._scrollwin.get_child(),
|
|
self.trackview._columnview)
|
|
|
|
def test_list_models(self):
|
|
"""Test our filter and selection list models."""
|
|
self.assertIsInstance(self.trackview._filtermodel, Gtk.FilterListModel)
|
|
self.assertIsInstance(self.trackview._selection, Gtk.MultiSelection)
|
|
|
|
self.assertEqual(self.trackview._filtermodel.get_filter(),
|
|
self.sql.tracks.get_filter())
|
|
self.assertTrue(self.trackview._filtermodel.get_incremental())
|
|
|
|
self.assertEqual(self.trackview._selection.get_model(),
|
|
self.trackview._filtermodel)
|
|
|
|
def test_columnview(self):
|
|
"""Test the columnview."""
|
|
self.assertIsInstance(self.trackview._columnview, Gtk.ColumnView)
|
|
self.assertEqual(self.trackview._columnview.get_model(),
|
|
self.trackview._selection)
|
|
self.assertEqual(self.trackview._columnview.get_columns(),
|
|
self.trackview.columns)
|
|
|
|
self.assertTrue(self.trackview._columnview.get_hexpand())
|
|
self.assertTrue(self.trackview._columnview.get_vexpand())
|
|
self.assertTrue(self.trackview._columnview.get_show_row_separators())
|
|
self.assertTrue(self.trackview._columnview.get_enable_rubberband())
|
|
self.assertTrue(self.trackview._columnview.has_css_class(
|
|
"emmental-track-list"))
|
|
|
|
def test_playlist(self):
|
|
"""Test the playlist property."""
|
|
self.assertIsNone(self.trackview.playlist)
|
|
self.trackview.playlist = self.playlist
|
|
self.assertEqual(self.trackview._filtermodel.get_model(),
|
|
self.playlist)
|
|
|
|
def test_n_tracks(self):
|
|
"""Test the n-tracks property."""
|
|
self.assertEqual(self.trackview.n_tracks, 0)
|
|
self.trackview._selection.set_model(self.playlist)
|
|
self.db_plist.add_track(self.track)
|
|
self.assertEqual(self.trackview.n_tracks, 1)
|
|
|
|
def test_runtime(self):
|
|
"""Test the runtime property."""
|
|
self.assertEqual(self.trackview.runtime, 0)
|
|
self.trackview._selection.set_model(self.playlist)
|
|
self.db_plist.add_track(self.track)
|
|
self.assertEqual(self.trackview.runtime, 10.0)
|
|
|
|
|
|
class TestTrackViewColumns(tests.util.TestCase):
|
|
"""Test the TrackView Columns."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
super().setUp()
|
|
self.trackview = emmental.tracklist.trackview.TrackView(self.sql)
|
|
self.columns = self.trackview.columns
|
|
self.listitem = Gtk.ListItem()
|
|
|
|
def test_title_column(self, i: int = 0):
|
|
"""Test the title column."""
|
|
self.assertEqual(self.columns[i].get_title(), "Title")
|
|
self.assertEqual(self.columns[i].get_fixed_width(), 300)
|
|
self.assertTrue(self.columns[i].get_resizable())
|
|
self.assertTrue(self.columns[i].get_visible())
|
|
|
|
factory = self.columns[i].get_factory()
|
|
self.assertIsInstance(factory, emmental.factory.Factory)
|
|
self.assertEqual(factory.row_type, emmental.tracklist.row.TrackString)
|
|
factory.emit("setup", self.listitem)
|
|
self.assertEqual(self.listitem.listrow.property, "title")
|
|
|
|
def test_artist_column(self, i: int = 1):
|
|
"""Test the artist column."""
|
|
self.assertEqual(self.columns[i].get_title(), "Artist")
|
|
self.assertEqual(self.columns[i].get_fixed_width(), 250)
|
|
self.assertTrue(self.columns[i].get_resizable())
|
|
self.assertTrue(self.columns[i].get_visible())
|
|
|
|
factory = self.columns[i].get_factory()
|
|
self.assertIsInstance(factory, emmental.factory.Factory)
|
|
self.assertEqual(factory.row_type, emmental.tracklist.row.TrackString)
|
|
factory.emit("setup", self.listitem)
|
|
self.assertEqual(self.listitem.listrow.property, "artist")
|