# Copyright 2021 (c) Anna Schumaker. import db import unittest from gi.repository import Gtk from . import footer from . import model class TestVisibleTracks(unittest.TestCase): def test_init(self): visible = footer.VisibleTracks() self.assertIsInstance(visible, Gtk.Label) self.assertEqual(visible.get_halign(), Gtk.Align.START) self.assertTrue(visible.get_hexpand()) def test_count(self): visible = footer.VisibleTracks() visible.set_count(0) self.assertEqual(visible.get_text(), "Showing 0 tracks") visible.set_count(1) self.assertEqual(visible.get_text(), "Showing 1 track") visible.set_count(2) self.assertEqual(visible.get_text(), "Showing 2 tracks") class TestRuntime(unittest.TestCase): def test_init(self): runtime = footer.Runtime() self.assertIsInstance(runtime, Gtk.Label) self.assertEqual(runtime.get_halign(), Gtk.Align.END) self.assertTrue(runtime.get_hexpand()) def test_runtime(self): runtime = footer.Runtime() runtime.set_runtime(0) self.assertEqual(runtime.get_text(), "0 seconds") runtime.set_runtime(61) self.assertEqual(runtime.get_text(), "1 minute, 1 second") runtime.set_runtime(3720) self.assertEqual(runtime.get_text(), "1 hour, 2 minutes") runtime.set_runtime(93600) self.assertEqual(runtime.get_text(), "1 day, 2 hours") runtime.set_runtime(777600) self.assertEqual(runtime.get_text(), "1 week, 2 days") runtime.set_runtime(1209600) self.assertEqual(runtime.get_text(), "2 weeks") class TestFooter(unittest.TestCase): def test_init(self): foot = footer.Footer(model.FilterPlaylistModel()) self.assertIsInstance(foot, Gtk.Box) self.assertIsInstance(foot.visible, footer.VisibleTracks) self.assertIsInstance(foot.runtime, footer.Runtime) self.assertEqual(foot.get_orientation(), Gtk.Orientation.HORIZONTAL) self.assertEqual(foot.get_margin_start(), 5) self.assertEqual(foot.get_margin_end(), 5) self.assertEqual(foot.get_first_child(), foot.visible) self.assertEqual(foot.visible.get_next_sibling(), foot.runtime) def test_updates(self): db.reset() filter = model.FilterPlaylistModel() foot = footer.Footer(filter) filter.set_playlist(db.user.Table.find("Collection")) db.make_fake_track(1, 1, "Test Track 1", "/a/b/c/1.ogg") self.assertEqual(foot.visible.get_text(), "Showing 1 track") self.assertEqual(foot.runtime.get_text(), "1 second")