# Copyright 2021 (c) Anna Schumaker. import db import pathlib import sqlite3 import unittest from gi.repository import GObject class TestLibraryTable(unittest.TestCase): def setUp(self): db.reset() def test_library_table_init(self): self.assertIsInstance(db.library.Table, db.library.LibraryTable) db.execute("SELECT libraryid,plstateid,enabled,path FROM libraries") def test_library_table_insert(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertIsInstance(library, db.library.Library) self.assertIsInstance(library, db.objects.Row) self.assertEqual(library.path, pathlib.Path("/a/b/c")) self.assertEqual(str(library), "/a/b/c") self.assertTrue(library.enabled) self.assertIsInstance(library.playlist_state, db.state.PlaylistState) with self.assertRaises(sqlite3.IntegrityError): db.library.Table.insert(pathlib.Path("/a/b/c")) def test_library_table_delete(self): library = db.library.Table.find(pathlib.Path("/a/b/c")) state = library.playlist_state track = db.make_fake_track(1, 1.234, "Test 1", "/a/b/c/1.ext", lib=library.path) db.library.Table.delete(library) self.assertIsNone(db.library.Table.lookup(pathlib.Path("/a/b/c"))) self.assertIsNone(db.state.Table.get(int(state))) self.assertIsNone(db.track.Table.get(int(track))) def test_library_table_get(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertEqual(db.library.Table.get(1), library) self.assertIsNone(db.library.Table.get(2)) def test_library_table_lookup(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertEqual(db.library.Table.lookup(pathlib.Path("/a/b/c")), library) self.assertIsNone(db.library.Table.lookup(pathlib.Path("/a/b/d"))) def test_library_compare(self): abc = db.library.Table.insert(pathlib.Path("/a/b/c")) efg = db.library.Table.insert(pathlib.Path("/e/f/g")) self.assertTrue(abc < efg) self.assertTrue(efg > abc) self.assertFalse(abc > efg) self.assertFalse(efg < abc) def test_library_enabled(self): abc = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertTrue(abc.enabled) abc.set_property("enabled", False) self.assertFalse(abc.enabled) def test_library_tracks(self): library = db.library.Table.find(pathlib.Path("/a/b/c")) track1 = db.make_fake_track(1, 1.234, "Test 1", "/a/b/c/1.ext", lib=library.path) track2 = db.make_fake_track(2, 2.345, "Test 1", "/a/b/c/2.ext", lib=library.path) self.assertEqual(library.tracks(), [ track1, track2 ])