xfstestsdb/tests/gtk/test_gsetup.py

55 lines
2.4 KiB
Python

# Copyright 2023 (c) Anna Schumaker.
"""Tests our Gtk Setup."""
import gi
import pathlib
import unittest
import xfstestsdb.gtk.gsetup
class TestGSetup(unittest.TestCase):
"""Test our Gtk setup."""
def test_require_version(self):
"""Check that we have called gi.require_version()."""
self.assertEqual(gi.get_required_version("Adw"), "1")
def test_constants(self):
"""Check that constants are configured correctly."""
self.assertEqual(xfstestsdb.gtk.gsetup.DEBUG_STR, "-debug")
self.assertEqual(xfstestsdb.gtk.gsetup.APPLICATION_ID,
"com.nowheycreamery.xfstestsdb.gtk-debug")
@unittest.mock.patch.object(gi.repository.Gdk.Display, "get_default")
@unittest.mock.patch.object(gi.repository.Gtk.StyleContext,
"add_provider_for_display")
def test_add_style(self, mock_add: unittest.mock.Mock,
mock_get_default: unittest.mock.Mock):
"""Check that the CSS stylesheet is loaded correctly."""
gtk_init_py = pathlib.Path(xfstestsdb.gtk.__file__)
stylesheet = gtk_init_py.parent / "xfstestsdb.css"
self.assertEqual(xfstestsdb.gtk.gsetup.CSS_FILE, stylesheet)
self.assertEqual(xfstestsdb.gtk.gsetup.CSS_PRIORITY,
gi.repository.Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
self.assertIsInstance(xfstestsdb.gtk.gsetup.CSS_PROVIDER,
gi.repository.Gtk.CssProvider)
self.assertNotEqual(xfstestsdb.gtk.gsetup.CSS_PROVIDER.to_string(), "")
xfstestsdb.gtk.gsetup.add_style()
mock_add.assert_called_with(mock_get_default.return_value,
xfstestsdb.gtk.gsetup.CSS_PROVIDER,
xfstestsdb.gtk.gsetup.CSS_PRIORITY)
@unittest.mock.patch("gi.repository.Gio.resources_register")
def test_resources(self, mock_register: unittest.mock.Mock):
"""Test that icon resources have been added to the app."""
gtk_init_py = pathlib.Path(xfstestsdb.gtk.__file__)
resources = gtk_init_py.parent / "icons" / "xfstestsdb.gresource"
self.assertEqual(xfstestsdb.gtk.gsetup.RESOURCE_FILE, resources)
self.assertEqual(xfstestsdb.gtk.gsetup.RESOURCE_PATH,
"/com/nowheycreamery/xfstestsdb")
self.assertIsInstance(xfstestsdb.gtk.gsetup.RESOURCE,
gi.repository.Gio.Resource)