emmental/tests/sidebar/test_sidebar.py

50 lines
1.8 KiB
Python

# Copyright 2022 (c) Anna Schumaker.
"""Tests our playlist Sidebar card."""
import emmental.sidebar
import tests.util
import unittest.mock
from gi.repository import Gtk
class TestSidebar(tests.util.TestCase):
"""Tests the Sidebar card."""
def setUp(self):
"""Set up common variables."""
super().setUp()
self.sidebar = emmental.sidebar.Card(sql=self.sql)
def test_init(self):
"""Test that the Sidebar has been set up correctly."""
self.assertIsInstance(self.sidebar, Gtk.Box)
self.assertEqual(self.sidebar.sql, self.sql)
self.assertEqual(self.sidebar.get_orientation(),
Gtk.Orientation.VERTICAL)
self.assertTrue(self.sidebar.has_css_class("background"))
self.assertTrue(self.sidebar.has_css_class("linked"))
self.assertTrue(self.sidebar.has_css_class("card"))
def test_filter(self):
"""Test the Sidebar filter entry."""
self.assertIsInstance(self.sidebar._filter, emmental.entry.Filter)
self.assertEqual(self.sidebar.get_first_child(), self.sidebar._filter)
self.assertEqual(self.sidebar._filter.get_placeholder_text(),
"type to filter playlists")
with unittest.mock.patch.object(self.sql, "filter") as mock_filter:
self.sidebar._filter.set_text("test text")
self.sidebar._filter.emit("search-changed")
mock_filter.assert_called_with("*test text*")
def test_sensitivity(self):
"""Test setting the sidebar sensitivity when all tables have loaded."""
tables = [t for t in self.sql.playlist_tables()]
self.assertFalse(self.sidebar.get_sensitive())
for table in tables:
self.sql.emit("table-loaded", table)
self.assertEqual(self.sidebar.get_sensitive(), table == tables[-1])