emmental/tests/tracklist/test_row.py

82 lines
3.1 KiB
Python

# Copyright 2023 (c) Anna Schumaker.
"""Tests our TrackView Row widgets."""
import pathlib
import emmental.factory
import emmental.tracklist.row
import tests.util
import unittest.mock
from gi.repository import Gtk
from gi.repository import Adw
class TestTrackRowWidgets(tests.util.TestCase):
"""Tests our Track Row widgets."""
def setUp(self):
"""Set up common variables."""
super().setUp()
self.sql.playlists.load()
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,
title="Test Title")
self.listitem = Gtk.ListItem()
self.listitem.get_item = unittest.mock.Mock(return_value=self.track)
self.columnrow = Adw.Bin()
self.listrow = Adw.Bin(child=self.columnrow)
def test_track_row(self):
"""Test the base Track Row."""
row = emmental.tracklist.row.TrackRow(self.listitem, "property")
self.assertIsInstance(row, emmental.factory.ListRow)
self.assertEqual(row.property, "property")
row.child = Gtk.Label()
self.columnrow.set_child(row.child)
self.library.online = False
self.track.active = True
row.bind()
self.assertFalse(row.online)
self.assertFalse(self.listitem.get_activatable())
self.assertFalse(row.child.get_sensitive())
self.assertTrue(row.active)
self.assertTrue(self.listrow.get_state_flags() &
Gtk.StateFlags.CHECKED)
self.library.online = True
self.track.active = False
self.assertTrue(row.online)
self.assertTrue(self.listitem.get_activatable())
self.assertTrue(row.child.get_sensitive())
self.assertFalse(row.active)
self.assertFalse(self.listrow.get_state_flags() &
Gtk.StateFlags.CHECKED)
def test_inscription_row(self):
"""Test the base Inscription Row."""
row = emmental.tracklist.row.InscriptionRow(self.listitem, "property")
self.assertIsInstance(row, emmental.tracklist.row.TrackRow)
self.assertIsInstance(row.child, Gtk.Inscription)
self.assertEqual(row.child.get_xalign(), 0.0)
row.child.set_text("Test Text")
self.assertEqual(row.child.get_tooltip_text(), "Test Text")
def test_track_string(self):
"""Test the Track String widget."""
row = emmental.tracklist.row.TrackString(self.listitem, "title")
self.assertIsInstance(row, emmental.tracklist.row.InscriptionRow)
self.assertEqual(row.property, "title")
row.bind()
self.assertEqual(row.child.get_text(), "Test Title")
self.track.title = "New Title"
self.assertEqual(row.child.get_text(), "New Title")