Skip to content

Commit

Permalink
Revise GUI unit tests to use pytest fixtures.
Browse files Browse the repository at this point in the history
Signed-off-by: Chris PeBenito <pebenito@ieee.org>
  • Loading branch information
pebenito committed Nov 17, 2023
1 parent b2a77f9 commit 1f3263e
Show file tree
Hide file tree
Showing 27 changed files with 168 additions and 326 deletions.
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -569,3 +569,6 @@ redefining-builtins-modules = ["six.moves", "past.builtins", "future.builtins",
[tool.pytest.ini_options]
addopts = ["--import-mode=importlib",]
pythonpath = "."
markers = [
"widget_kwargs"
]
15 changes: 10 additions & 5 deletions tests-gui/widgets/criteria/util.py → tests-gui/conftest.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-only
# pylint: disable=attribute-defined-outside-init

from unittest.mock import Mock

import pytest
import setools


Expand All @@ -13,7 +16,8 @@ def __repr__(self):
return f"<{self.__class__} name={self.name}>"


def build_mock_policy() -> Mock:
@pytest.fixture
def mock_policy() -> Mock:
"""Build a mock policy."""
foo_bool = SortableMock(setools.Boolean)
foo_bool.name = "foo_bool"
Expand Down Expand Up @@ -63,8 +67,9 @@ def build_mock_policy() -> Mock:
return policy


def build_mock_query() -> Mock:
@pytest.fixture
def mock_query(mock_policy) -> Mock:
"""Build a mock query with mocked policy."""
mock_query = Mock(setools.PolicyQuery)
mock_query.policy = build_mock_policy()
return mock_query
query = Mock(setools.PolicyQuery)
query.policy = mock_policy
return query
8 changes: 2 additions & 6 deletions tests-gui/widgets/criteria/test_boolean.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@
BooleanNameCriteriaWidget)
from setoolsgui.widgets.models.table import SEToolsTableModel

from .util import build_mock_query


def test_bool_list(qtbot: QtBot) -> None:
def test_bool_list(qtbot: QtBot, mock_query) -> None:
"""Test Boolean name list widget."""
mock_query = build_mock_query()
widget = BooleanListCriteriaWidget("test_bool_list", mock_query, "name")
qtbot.addWidget(widget)

Expand All @@ -20,9 +17,8 @@ def test_bool_list(qtbot: QtBot) -> None:
assert sorted(mock_query.policy.bools()) == model.item_list


def test_bool_name(qtbot: QtBot) -> None:
def test_bool_name(qtbot: QtBot, mock_query) -> None:
"""Test Boolean name line edit widget."""
mock_query = build_mock_query()
widget = BooleanNameCriteriaWidget("test_bool_name", mock_query, "name")
qtbot.addWidget(widget)

Expand Down
41 changes: 13 additions & 28 deletions tests-gui/widgets/criteria/test_checkboxset.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,20 @@

from setoolsgui.widgets.criteria.checkboxset import CheckboxSetCriteriaWidget

from .util import build_mock_query

CHECKBOXES = ("cb1", "cb2", "cb3")


def test_base_settings(qtbot: QtBot) -> None:
def test_base_settings(qtbot: QtBot, mock_query) -> None:
"""Test base properties of widget."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES)
qtbot.addWidget(widget)

assert widget.attrname == "checkboxes"
assert len(widget.criteria) == len(CHECKBOXES)


def test_3across_layout(qtbot: QtBot) -> None:
def test_3across_layout(qtbot: QtBot, mock_query) -> None:
"""Test three checkboxes all in one row layout."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=3)
qtbot.addWidget(widget)
Expand All @@ -38,9 +34,8 @@ def test_3across_layout(qtbot: QtBot) -> None:
assert widget.top_layout.itemAtPosition(1, 3).widget() == widget.invert_criteria


def test_2across_layout(qtbot: QtBot) -> None:
def test_2across_layout(qtbot: QtBot, mock_query) -> None:
"""Test two columns of checkboxes layout."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=2)
qtbot.addWidget(widget)
Expand All @@ -54,9 +49,8 @@ def test_2across_layout(qtbot: QtBot) -> None:
assert widget.top_layout.itemAtPosition(1, 2).widget() == widget.invert_criteria


def test_1across_layout(qtbot: QtBot) -> None:
def test_1across_layout(qtbot: QtBot, mock_query) -> None:
"""Test one column of checkboxes layout."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -70,9 +64,8 @@ def test_1across_layout(qtbot: QtBot) -> None:
assert not widget.top_layout.itemAtPosition(2, 1)


def test_selection(qtbot: QtBot) -> None:
def test_selection(qtbot: QtBot, mock_query) -> None:
"""Test checked boxes are reflected in the query."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -89,9 +82,8 @@ def test_selection(qtbot: QtBot) -> None:
assert mock_query.checkboxes == ["cb1", "cb3"]


def test_set_selection(qtbot: QtBot) -> None:
def test_set_selection(qtbot: QtBot, mock_query) -> None:
"""Test set_selection method."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -108,9 +100,8 @@ def test_set_selection(qtbot: QtBot) -> None:
assert mock_query.checkboxes == ["cb2", "cb3"]


def test_clear_selection(qtbot: QtBot) -> None:
def test_clear_selection(qtbot: QtBot, mock_query) -> None:
"""Test clear selection button."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -125,9 +116,8 @@ def test_clear_selection(qtbot: QtBot) -> None:
assert mock_query.checkboxes == []


def test_invert_selection(qtbot: QtBot) -> None:
def test_invert_selection(qtbot: QtBot, mock_query) -> None:
"""Test clear selection button."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -142,9 +132,8 @@ def test_invert_selection(qtbot: QtBot) -> None:
assert mock_query.checkboxes == ["cb3"]


def test_save(qtbot: QtBot) -> None:
def test_save(qtbot: QtBot, mock_query) -> None:
"""Test save."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -160,9 +149,8 @@ def test_save(qtbot: QtBot) -> None:
assert expected == settings


def test_load(qtbot: QtBot) -> None:
def test_load(qtbot: QtBot, mock_query) -> None:
"""Test load."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -175,9 +163,8 @@ def test_load(qtbot: QtBot) -> None:
assert widget.selection() == selection


def test_set_selection_disabled(qtbot: QtBot) -> None:
def test_set_selection_disabled(qtbot: QtBot, mock_query) -> None:
"""Test set_selection method, ignoring disabled boxes."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -193,9 +180,8 @@ def test_set_selection_disabled(qtbot: QtBot) -> None:
assert mock_query.checkboxes == ["cb3"]


def test_clear_selection_disabled(qtbot: QtBot) -> None:
def test_clear_selection_disabled(qtbot: QtBot, mock_query) -> None:
"""Test clear selection button, ignoring disabled boxes."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand All @@ -212,9 +198,8 @@ def test_clear_selection_disabled(qtbot: QtBot) -> None:
assert mock_query.checkboxes == ["cb2"]


def test_invert_selection_disabled(qtbot: QtBot) -> None:
def test_invert_selection_disabled(qtbot: QtBot, mock_query) -> None:
"""Test clear selection button, ignoring disabled boxes."""
mock_query = build_mock_query()
widget = CheckboxSetCriteriaWidget("title", mock_query, "checkboxes", CHECKBOXES,
num_cols=1)
qtbot.addWidget(widget)
Expand Down
Loading

0 comments on commit 1f3263e

Please sign in to comment.