# Copyright 2021 (c) Anna Schumaker. import db import sqlite3 import unittest from gi.repository import GObject class TestAlbumTable(unittest.TestCase): def on_row_inserted(self, table, row): self.row_inserted = row def setUp(self): db.reset() def test_album_table_init(self): self.assertIsInstance(db.album.Table, db.album.AlbumTable) db.execute("SELECT albumid,artistid,name,sort FROM albums") def test_album_table_insert(self): db.album.Table.connect("row-inserted", self.on_row_inserted) artist = db.artist.Table.insert("Test Artist", "Test Sort") album = db.album.Table.insert(artist, "Test Album") self.assertIsInstance(album, db.album.Album) self.assertIsInstance(album, db.objects.Tag) self.assertEqual(self.row_inserted, album) self.assertEqual(album.name, "Test Album") self.assertEqual(album.sort, "test album") self.assertEqual(album.get_property("artist"), artist) with self.assertRaises(sqlite3.IntegrityError): db.album.Table.insert(artist, "Test Album") def test_album_table_delete(self): artist = db.artist.Table.find("Test Artist", "Test Sort") album = db.album.Table.find(artist, "Test Album") db.album.Table.delete(album) self.assertIsNone(db.album.Table.lookup(artist, "Test Album")) def test_album_table_get(self): artist = db.artist.Table.insert("Test Artist", "Test Sort") album = db.album.Table.insert(artist, "Test Album") self.assertEqual(db.album.Table.get(1), album) self.assertIsNone(db.album.Table.get(2)) def test_album_table_lookup(self): artist = db.artist.Table.insert("Test Artist", "Test Sort") album = db.album.Table.insert(artist, "Test Album") self.assertEqual(db.album.Table.lookup(artist, "Test Album"), album) self.assertIsNone(db.album.Table.lookup(artist, "none")) def test_album_discs(self): artist = db.artist.Table.find("Test Artist", "Test Sort") album = db.album.Table.find(artist, "Test Album") disc1 = db.disc.Table.find(album, 1, None) disc2 = db.disc.Table.find(album, 2, None) self.assertEqual(album.discs(), [ disc1, disc2 ])