ui/common: Introduce tests
This commit is contained in:
parent
89233957dc
commit
0f4d1aebcd
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
import gi
|
import gi
|
||||||
|
|
||||||
from solaar.i18n import _
|
from solaar.i18n import _
|
||||||
|
@ -28,35 +30,36 @@ from gi.repository import Gtk # NOQA: E402
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def _error_dialog(reason, object):
|
def _create_error_text(reason: str, object_) -> Tuple[str, str]:
|
||||||
logger.error("error: %s %s", reason, object)
|
|
||||||
|
|
||||||
if reason == "permissions":
|
if reason == "permissions":
|
||||||
title = _("Permissions error")
|
title = _("Permissions error")
|
||||||
text = (
|
text = (
|
||||||
_("Found a Logitech receiver or device (%s), but did not have permission to open it.") % object
|
_("Found a Logitech receiver or device (%s), but did not have permission to open it.") % object_
|
||||||
+ "\n\n"
|
+ "\n\n"
|
||||||
+ _("If you've just installed Solaar, try disconnecting the receiver or device and then reconnecting it.")
|
+ _("If you've just installed Solaar, try disconnecting the receiver or device and then reconnecting it.")
|
||||||
)
|
)
|
||||||
elif reason == "nodevice":
|
elif reason == "nodevice":
|
||||||
title = _("Cannot connect to device error")
|
title = _("Cannot connect to device error")
|
||||||
text = (
|
text = (
|
||||||
_("Found a Logitech receiver or device at %s, but encountered an error connecting to it.") % object
|
_("Found a Logitech receiver or device at %s, but encountered an error connecting to it.") % object_
|
||||||
+ "\n\n"
|
+ "\n\n"
|
||||||
+ _("Try disconnecting the device and then reconnecting it or turning it off and then on.")
|
+ _("Try disconnecting the device and then reconnecting it or turning it off and then on.")
|
||||||
)
|
)
|
||||||
elif reason == "unpair":
|
elif reason == "unpair":
|
||||||
title = _("Unpairing failed")
|
title = _("Unpairing failed")
|
||||||
text = (
|
text = (
|
||||||
_("Failed to unpair %{device} from %{receiver}.").format(device=object.name, receiver=object.receiver.name)
|
_("Failed to unpair %{device} from %{receiver}.").format(device=object_.name, receiver=object_.receiver.name)
|
||||||
+ "\n\n"
|
+ "\n\n"
|
||||||
+ _("The receiver returned an error, with no further details.")
|
+ _("The receiver returned an error, with no further details.")
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise Exception("ui.error_dialog: don't know how to handle (%s, %s)", reason, object)
|
raise Exception("ui.error_dialog: don't know how to handle (%s, %s)", reason, object_)
|
||||||
|
return title, text
|
||||||
|
|
||||||
assert title
|
|
||||||
assert text
|
def _error_dialog(reason: str, object_):
|
||||||
|
logger.error("error: %s %s", reason, object_)
|
||||||
|
title, text = _create_error_text(reason, object_)
|
||||||
|
|
||||||
m = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, text)
|
m = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, text)
|
||||||
m.set_title(title)
|
m.set_title(title)
|
||||||
|
@ -64,9 +67,9 @@ def _error_dialog(reason, object):
|
||||||
m.destroy()
|
m.destroy()
|
||||||
|
|
||||||
|
|
||||||
def error_dialog(reason, object):
|
def error_dialog(reason, object_):
|
||||||
assert reason is not None
|
assert reason is not None
|
||||||
GLib.idle_add(_error_dialog, reason, object)
|
GLib.idle_add(_error_dialog, reason, object_)
|
||||||
|
|
||||||
|
|
||||||
_task_runner = None
|
_task_runner = None
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
from unittest import mock
|
||||||
|
from unittest.mock import PropertyMock
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from solaar.ui import common
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"reason, expected_in_title, expected_in_text",
|
||||||
|
[
|
||||||
|
(
|
||||||
|
"permissions",
|
||||||
|
"Permissions error",
|
||||||
|
"not have permission to open",
|
||||||
|
),
|
||||||
|
("nodevice", "connect to device error", "error connecting"),
|
||||||
|
("unpair", "Unpairing failed", "receiver returned an error"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_create_error_text(reason, expected_in_title, expected_in_text):
|
||||||
|
obj = mock.Mock()
|
||||||
|
obj.name = PropertyMock(return_value="test")
|
||||||
|
|
||||||
|
title, text = common._create_error_text(reason, obj)
|
||||||
|
|
||||||
|
assert expected_in_title in title
|
||||||
|
assert expected_in_text in text
|
Loading…
Reference in New Issue