Anna Schumaker
f1e18549ff
This button shows a popover menu to set the visibility of our columns. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
# Copyright 2022 (c) Anna Schumaker
|
|
"""Tests extra buttons for the TrackList."""
|
|
import unittest
|
|
import unittest.mock
|
|
import emmental.tracklist.buttons
|
|
from gi.repository import Gio
|
|
from gi.repository import Gtk
|
|
|
|
|
|
class TestVisibleColumns(unittest.TestCase):
|
|
"""Test the Visible Columns button."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
self.columns = Gio.ListStore()
|
|
self.button = emmental.tracklist.buttons.VisibleColumns(self.columns)
|
|
|
|
def test_init(self):
|
|
"""Test that the Visible Columns button is set up properly."""
|
|
self.assertIsInstance(self.button, emmental.buttons.PopoverButton)
|
|
self.assertFalse(self.button.get_has_frame())
|
|
self.assertEqual(self.button.get_icon_name(), "columns-symbolic")
|
|
self.assertEqual(self.button.columns, self.columns)
|
|
|
|
def test_popover_child(self):
|
|
"""Test that the popover_child was set up properly."""
|
|
self.assertIsInstance(self.button.popover_child, Gtk.ColumnView)
|
|
self.assertIsInstance(self.button._selection, Gtk.NoSelection)
|
|
self.assertTrue(self.button.popover_child.get_show_row_separators())
|
|
self.assertTrue(self.button.popover_child.has_css_class("data-table"))
|
|
|
|
self.assertEqual(self.button.popover_child.get_model(),
|
|
self.button._selection)
|
|
self.assertEqual(self.button._selection.get_model(),
|
|
self.button.columns)
|
|
|
|
def test_columns(self):
|
|
"""Test the popover_child columns."""
|
|
columns = self.button.popover_child.get_columns()
|
|
self.assertEqual(len(columns), 2)
|
|
|
|
self.assertIsInstance(columns[0].get_factory(),
|
|
emmental.factory.InscriptionFactory)
|
|
self.assertEqual(columns[0].get_title(), "Column")
|
|
self.assertEqual(columns[0].get_fixed_width(), 125)
|
|
|
|
self.assertIsInstance(columns[1].get_factory(),
|
|
emmental.factory.Factory)
|
|
self.assertEqual(columns[1].get_factory().row_type,
|
|
emmental.tracklist.buttons.VisibleSwitch)
|
|
self.assertEqual(columns[1].get_title(), "Visible")
|
|
self.assertEqual(columns[1].get_fixed_width(), -1)
|
|
|
|
def test_visible_switch(self):
|
|
"""Test the visible switch widget."""
|
|
item = Gtk.Label()
|
|
listitem = Gtk.ListItem()
|
|
listitem.get_item = unittest.mock.Mock(return_value=item)
|
|
switch = emmental.tracklist.buttons.VisibleSwitch(listitem)
|
|
|
|
self.assertIsInstance(switch, emmental.factory.ListRow)
|
|
self.assertIsInstance(switch.child, Gtk.Switch)
|
|
|
|
switch.bind()
|
|
self.assertEqual(len(switch.bindings), 1)
|
|
self.assertTrue(switch.child.get_active())
|
|
|
|
item.set_visible(False)
|
|
self.assertFalse(switch.child.get_active())
|
|
switch.child.set_active(True)
|
|
item.set_visible(True)
|