emmental/playlist/test_footer.py

70 lines
2.6 KiB
Python

# 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")