# 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)