# Copyright 2021 (c) Anna Schumaker. import db import pathlib import sqlite3 import unittest from gi.repository import GObject class TestLibrary(unittest.TestCase): def setUp(self): db.reset() def test_init(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertIsInstance(library, db.playlist.Playlist) self.assertEqual(library.get_property("name"), "/a/b/c") self.assertEqual(library.get_property("icon-name"), "folder-music") def test_delete(self): library = db.library.Table.find(pathlib.Path("/a/b/c")) library.delete() self.assertIsNone(db.library.Table.lookup(pathlib.Path("/a/b/c"))) def test_path(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertIsInstance(library._path, pathlib.Path) self.assertEqual(library.get_property("path"), library._path) def test_enabled(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertTrue(library._enabled) self.assertTrue(library.get_property("enabled")) library.enabled = False self.assertFalse(library._enabled) class TestLibraryTable(unittest.TestCase): def setUp(self): db.reset() def test_init(self): table = db.library.LibraryTable() self.assertIsInstance(table, db.playlist.Model) self.assertIsInstance(table, db.table.Model) self.assertEqual(table.table, "libraries") self.assertEqual(table.order, "path") self.assertIsInstance(db.library.Table, db.library.LibraryTable) db.sql.execute("SELECT libraryid,plstateid,enabled,path FROM libraries") def test_insert(self): table = db.library.LibraryTable() library = table.insert(pathlib.Path("/a/b/c")) self.assertIsInstance(library, db.library.Library) self.assertIsInstance(library._plstate, db.state.PlaylistState) self.assertEqual(library._rowkey, "libraryid") self.assertEqual(library._path, pathlib.Path("/a/b/c")) self.assertTrue(library._enabled) with self.assertRaises(sqlite3.IntegrityError): db.library.Table.insert(pathlib.Path("/a/b/c")) def test_delete(self): table = db.library.LibraryTable() library = table.insert(pathlib.Path("/a/b/c")) state = library.plist_state table.delete(library) self.assertIsNone(db.library.Table.lookup(pathlib.Path("/a/b/c"))) self.assertIsNone(db.state.Table.get(state.rowid)) def test_lookup(self): table = db.library.LibraryTable() library = table.insert(pathlib.Path("/a/b/c")) self.assertEqual(table.lookup(pathlib.Path("/a/b/c")), library) self.assertIsNone(table.lookup(pathlib.Path("/a/b/d")))