93 lines
3.9 KiB
Python
93 lines
3.9 KiB
Python
# Copyright 2022 (c) Anna Schumaker.
|
|
"""Tests our artist / album / disc section and tree."""
|
|
import emmental.sidebar.artist
|
|
import emmental.sidebar.row
|
|
import tests.util
|
|
import unittest.mock
|
|
from gi.repository import Gtk
|
|
|
|
|
|
class TestArtist(tests.util.TestCase):
|
|
"""Test our Artist section."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
super().setUp()
|
|
self.artists = emmental.sidebar.artist.Section(self.sql.artists,
|
|
self.sql.albums)
|
|
|
|
def test_init(self):
|
|
"""Test that the artists section is set up correctly."""
|
|
self.assertIsInstance(self.artists, emmental.sidebar.section.Section)
|
|
self.assertEqual(self.artists._factory.row_type,
|
|
emmental.sidebar.artist.ArtistRow)
|
|
|
|
self.assertEqual(self.artists.table, self.sql.artists)
|
|
self.assertEqual(self.artists.album_table, self.sql.albums)
|
|
self.assertEqual(self.artists.icon_name, "library-artists")
|
|
self.assertEqual(self.artists.title, "Artists & Albums")
|
|
|
|
def test_extra_widget(self):
|
|
"""Test the artist section extra widget."""
|
|
self.assertIsInstance(self.artists.extra_widget,
|
|
emmental.buttons.ImageToggle)
|
|
self.assertEqual(self.artists.extra_widget.active_icon_name,
|
|
"music-artist")
|
|
self.assertEqual(self.artists.extra_widget.active_tooltip_text,
|
|
"show album artists")
|
|
self.assertEqual(self.artists.extra_widget.inactive_icon_name,
|
|
"music-artist2")
|
|
self.assertEqual(self.artists.extra_widget.inactive_tooltip_text,
|
|
"show all artists")
|
|
self.assertFalse(self.artists.extra_widget.large_icon)
|
|
self.assertFalse(self.artists.extra_widget.get_has_frame())
|
|
|
|
def test_subtitle(self):
|
|
"""Test that the subtitle property is set properly."""
|
|
self.artists.show_all = True
|
|
self.assertEqual(self.artists.subtitle, "0 artists, 0 albums")
|
|
artist = self.sql.artists.create("Artist 1")
|
|
self.assertEqual(self.artists.subtitle, "1 artist, 0 albums")
|
|
artist.add_album(self.sql.albums.create("Album 1", "Artist 1", "2022"))
|
|
self.assertEqual(self.artists.subtitle, "1 artist, 1 album")
|
|
artist.add_album(self.sql.albums.create("Album 2", "Artist 1", "2023"))
|
|
self.assertEqual(self.artists.subtitle, "1 artist, 2 albums")
|
|
self.sql.artists.create("Artist 2")
|
|
self.assertEqual(self.artists.subtitle, "2 artists, 2 albums")
|
|
|
|
def test_show_all(self):
|
|
"""Test the show all property."""
|
|
self.assertFalse(self.artists.show_all)
|
|
self.artists.show_all = True
|
|
self.assertTrue(self.artists.extra_widget.active)
|
|
self.assertTrue(self.sql.artists.show_all)
|
|
self.artists.extra_widget.active = False
|
|
self.assertFalse(self.artists.show_all)
|
|
self.assertFalse(self.sql.artists.show_all)
|
|
|
|
def test_artist_row(self):
|
|
"""Test setting an album cover to the row icon."""
|
|
artist = self.sql.artists.create("Test Artist")
|
|
album = self.sql.albums.create("Test Album", "Test Artist", "2022")
|
|
artist.add_album(album)
|
|
|
|
treeitem = Gtk.TreeListRow()
|
|
treeitem.get_item = unittest.mock.Mock(return_value=artist)
|
|
listitem = Gtk.ListItem()
|
|
listitem.get_item = unittest.mock.Mock(return_value=treeitem)
|
|
row = emmental.sidebar.artist.ArtistRow(listitem)
|
|
self.assertIsInstance(row.child, emmental.sidebar.row.Row)
|
|
self.assertTrue(row.indented)
|
|
|
|
row.bind()
|
|
self.assertEqual(row.child.name, "Test Artist")
|
|
row.unbind()
|
|
|
|
treeitem.get_item.return_value = album
|
|
row.bind()
|
|
self.assertEqual(row.child.name, "Test Album")
|
|
self.assertIsNone(row.child.image)
|
|
|
|
album.cover = tests.util.COVER_JPG
|
|
self.assertEqual(row.child.image, tests.util.COVER_JPG)
|