From 72df97fa7b9f56dd3e2adc4ac2f8752cded906db Mon Sep 17 00:00:00 2001 From: Nico Alt <nicoalt@posteo.org> Date: Tue, 9 Jun 2020 12:00:00 +0000 Subject: [PATCH] Huge revision of application tests --- briar-gtk/tests/briar_gtk/test_application.py | 128 ++++++++++++++---- pytest.ini | 7 - 2 files changed, 98 insertions(+), 37 deletions(-) delete mode 100644 pytest.ini diff --git a/briar-gtk/tests/briar_gtk/test_application.py b/briar-gtk/tests/briar_gtk/test_application.py index ddb1df6..b19cbec 100644 --- a/briar-gtk/tests/briar_gtk/test_application.py +++ b/briar-gtk/tests/briar_gtk/test_application.py @@ -2,55 +2,123 @@ # SPDX-License-Identifier: AGPL-3.0-only # License-Filename: LICENSE.md -from unittest.mock import Mock - import pytest -from briar_wrapper.api import Api - from briar_gtk.application import Application -from briar_gtk.define import APPLICATION_NAME, APPLICATION_STYLING_PATH -from briar_gtk.define import BRIAR_HEADLESS_JAR -from briar_gtk.window import Window +MODULE = "briar_gtk.application.%s" + + +def test_application_actions_at_init(mocker): + application_actions_mock = mocker.patch( + MODULE % "ApplicationActions") + + application = Application() + + application_actions_mock.assert_called_once_with(application) + + +def test_application_name_at_init(mocker): + application_name_mock = mocker.patch( + MODULE % "GLib.set_application_name") + prgname_mock = mocker.patch( + MODULE % "GLib.set_prgname") + + application = Application() + + application_name_mock.assert_called_once_with("Briar") + prgname_mock.assert_called_once_with("Briar") + + +def test_api_at_startup(mocker): + api_mock = mocker.patch(MODULE % "Api") + + Application().do_startup() + + api_mock.assert_called_once_with("/app/briar/briar-headless.jar") + + +def test_css_provider_at_startup(mocker): + css_provider_mock = mocker.patch(MODULE % "Gtk.CssProvider") + + Application().do_startup() + + css_provider_mock.assert_called_once() + + +def test_handy_at_startup(mocker): + handy_mock = mocker.patch(MODULE % "Handy.init") + + Application().do_startup() + + handy_mock.assert_called_once() + + +def test_startup_at_startup(mocker): + do_startup_mock = mocker.patch(MODULE % "Gtk.Application.do_startup") + + application = Application() + + application.do_startup() -def test_do_startup(mocker): - do_startup_mock = mocker.patch("gi.repository.Gtk.Application.do_startup") - _setup_styling_mock = mocker.patch( - "briar_gtk.application.Application._setup_styling") - _setup_api_mock = mocker.patch( - "briar_gtk.application.Application._setup_api") + do_startup_mock.assert_called_once_with(application) + + +def test_style_context_at_startup(mocker): + style_context_mock = mocker.patch(MODULE % "Gtk.StyleContext") Application().do_startup() - do_startup_mock.assert_called_once() - _setup_styling_mock.assert_called_once_with(APPLICATION_STYLING_PATH) - _setup_api_mock.assert_called_once() + style_context_mock.assert_called_once() -def test_do_activate(mocker): - _setup_window_mock = mocker.patch( - "briar_gtk.application.Application._setup_window") +def test_window_at_activate(mocker): + window_mock = mocker.patch(MODULE % "Window") Application().do_activate() - _setup_window_mock.assert_called_once() + window_mock.assert_called_once() -def test_do_shutdown(mocker): - api_mock = mocker.patch("briar_wrapper.api.Api") - api_stop_mock = mocker.patch("briar_wrapper.api.Api.stop") - window_mock = mocker.patch("briar_gtk.window.Window") - window_hide_mock = mocker.patch("briar_gtk.window.Window.hide") - do_shutdown_mock = mocker.patch( - "gi.repository.Gio.Application.do_shutdown") +def test_already_window_at_activate(mocker): + gtk_window_mock = mocker.patch(MODULE % "Window") + window_mock = mocker.MagicMock() + + application = Application() + application.window = window_mock + + application.do_activate() + + window_mock.present.assert_called_once() + assert gtk_window_mock.called is False + + +def test_api_stop_at_shutdown(mocker): + api_mock = mocker.patch(MODULE % "Api") application = Application() application.api = api_mock + application.window = mocker.MagicMock() + + application.do_shutdown() + + api_mock.stop.assert_called_once() + + +def test_window_hide_at_shutdown(mocker): + window_mock = mocker.patch(MODULE % "Window") + + application = Application() + application.api = mocker.MagicMock() application.window = window_mock application.do_shutdown() - api_stop_mock.assert_called_once() - window_hide_mock.assert_called_once() - do_shutdown_mock.assert_called_once() + window_mock.hide.assert_called_once() + + +@pytest.fixture(autouse=True) +def gi_dependencies(mocker): + gi_dependencies = ('Gdk', 'Gio', 'GLib', 'Gtk', 'Handy') + for dependency in gi_dependencies: + mocker.patch(MODULE % dependency) diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index ee1ffab..0000000 --- a/pytest.ini +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2019 Nico Alt -# SPDX-License-Identifier: AGPL-3.0-only -# License-Filename: LICENSE.md - -[pytest] -filterwarnings = - ignore:Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working:DeprecationWarning -- GitLab