# Copyright 2021 (c) Anna Schumaker. import db import sqlite3 import unittest from gi.repository import GObject class TestArtistTable(unittest.TestCase): def on_row_inserted(self, table, row): self.row_inserted = row def on_row_deleted(self, table, row): self.row_deleted = row def setUp(self): db.reset() def test_artist_table_init(self): self.assertIsInstance(db.artist.Table, db.artist.ArtistTable) db.execute("SELECT artistid,plstateid,name,sort FROM artists") def test_artist_table_insert(self): db.artist.Table.connect("row-inserted", self.on_row_inserted) artist = db.artist.Table.insert("Test Artist", "Test Sort") self.assertIsInstance(artist, db.artist.Artist) self.assertIsInstance(artist, db.objects.Tag) self.assertEqual(self.row_inserted, artist) self.assertEqual(artist.name, "Test Artist") self.assertEqual(artist.sort, "test sort") self.assertIsInstance(artist.playlist_state, db.state.PlaylistState) with self.assertRaises(sqlite3.IntegrityError): db.artist.Table.insert("Test Artist", "Test Sort") def test_artist_table_delete(self): artist = db.artist.Table.find("Test Artist", "Test Sort") state = artist.playlist_state db.artist.Table.connect("row-deleted", self.on_row_deleted) db.artist.Table.delete(artist) self.assertIsNone(db.artist.Table.lookup("Test Artist")) self.assertIsNone(db.state.Table.get(int(state))) def test_artist_table_get(self): artist = db.artist.Table.insert("Test Artist", "Test Sort") self.assertEqual(db.artist.Table.get(1), artist) self.assertIsNone(db.artist.Table.get(2)) def test_artist_table_lookup(self): artist = db.artist.Table.insert("Test Artist", "Test Sort") self.assertEqual(db.artist.Table.lookup("Test Artist"), artist) self.assertIsNone(db.artist.Table.lookup("none")) def test_artist_albums(self): artist = db.artist.Table.find("Test Artist", "Test Sort") a = db.album.Table.find(artist, "A") b = db.album.Table.find(artist, "B") self.assertEqual(artist.albums(), [ a, b ])