# Copyright 2021 (c) Anna Schumaker. import db import sqlite3 import unittest from gi.repository import GObject class TestYear(unittest.TestCase): def track_added(self, plist, added): self.added = added def track_removed(self, plist, removed, adjusted_current): self.removed = (removed, adjusted_current) def setUp(self): db.reset() def test_init(self): decade = db.decade.Table.find(2020) year = decade.find_year(2021) self.assertIsInstance(year, db.playlist.Playlist) self.assertEqual(year.get_property("name"), "2021") self.assertEqual(year.get_property("year"), 2021) self.assertEqual(year.get_property("icon-name"), "x-office-calendar") def test_delete(self): decade = db.decade.Table.find(2020) year = decade.find_year(2021) year.delete() self.assertIsNone(db.year.Table.lookup(2021)) def test_tracks(self): decade = db.decade.Table.find(2020) year = decade.find_year(2021) year.connect("track-added", self.track_added) self.assertEqual(year.get_n_tracks(), 0) self.assertEqual(year.get_tracks(), [ ]) track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg") self.assertEqual(year.get_n_tracks(), 1) self.assertEqual(year.get_track(0), track) self.assertEqual(year.get_tracks(), [ track ]) self.assertEqual(year.get_track_index(track), 0) self.assertEqual(self.added, track) year.connect("track-removed", self.track_removed) db.track.Table.delete(track) self.assertEqual(year.get_tracks(), [ ]) self.assertEqual(self.removed, (track, False)) class TestYearTable(unittest.TestCase): def setUp(self): db.reset() def test_init(self): table = db.year.YearTable() self.assertIsInstance(table, db.playlist.ChildModel) self.assertEqual(table.table, "years") self.assertEqual(table.order, "year") self.assertIsInstance(db.year.Table, db.year.YearTable) db.sql.execute("SELECT yearid,decadeid,plstateid,year FROM years") def test_insert(self): decade = db.decade.Table.insert(2020) year = decade.find_year(2021) self.assertIsInstance(year, db.year.Year) self.assertEqual(year._year, 2021) self.assertEqual(year._rowkey, "yearid") with self.assertRaises(sqlite3.IntegrityError): db.year.Table.insert(decade, 2021) def test_lookup(self): decade = db.decade.Table.find(2020) year = decade.find_year(2021) self.assertEqual(db.year.Table.lookup(2021), year) self.assertIsNone(db.year.Table.lookup(2022))