setools/tests-gui/widgets/test_tab.py
Chris PeBenito fff85bd58d BaseAnalysisTabWidget: Add optional browser pane.
Includes some minor attribute renaming for consistency.

Signed-off-by: Chris PeBenito <pebenito@ieee.org>
2024-02-14 09:11:35 -05:00

98 lines
4.4 KiB
Python

# SPDX-License-Identifier: GPL-2.0-only
from typing import cast
from PyQt6 import QtCore, QtWidgets
from pytestqt.qtbot import QtBot
from setoolsgui.widgets import tab
from .criteria.util import build_mock_query
def test_basetab_layout(qtbot: QtBot) -> None:
"""Test BaseAnalysisTabWidget with criteria."""
widget = tab.BaseAnalysisTabWidget(None, None, enable_criteria=True)
qtbot.addWidget(widget)
assert widget.analysis_layout.columnCount() == 5
assert widget.analysis_layout.rowCount() == 4
assert widget.analysis_layout.itemAtPosition(0, 3).widget() == widget.criteria_expander
assert widget.analysis_layout.itemAtPosition(0, 4).widget() == widget.notes_expander
assert widget.analysis_layout.itemAtPosition(1, 0).widget() == widget.criteria_frame
assert not widget.analysis_layout.itemAtPosition(2, 0) # result widget set by subclasses
assert widget.analysis_layout.itemAtPosition(3, 0).widget() == widget.notes
def test_basetab_layout_nocriteria(qtbot: QtBot) -> None:
"""Test BaseAnalysisTabWidget without criteria."""
widget = tab.BaseAnalysisTabWidget(None, None, enable_criteria=False)
qtbot.addWidget(widget)
assert widget.analysis_layout.columnCount() == 5
assert widget.analysis_layout.rowCount() == 4
assert not widget.analysis_layout.itemAtPosition(0, 3) # no criteria expander
assert widget.analysis_layout.itemAtPosition(0, 4).widget() == widget.notes_expander
assert not widget.analysis_layout.itemAtPosition(1, 0) # no criteria pane
assert not widget.analysis_layout.itemAtPosition(2, 0) # result widget set by subclasses
assert widget.analysis_layout.itemAtPosition(3, 0).widget() == widget.notes
def test_basetab_criteria_expander(qtbot: QtBot) -> None:
"""Test BaseAnalysisTabWidget criteria expander behavior."""
widget = tab.BaseAnalysisTabWidget(None, None, enable_criteria=True)
qtbot.addWidget(widget)
widget.show()
if tab.CRITERIA_DEFAULT_CHECKED:
assert widget.criteria_frame.isVisible()
qtbot.mouseClick(widget.criteria_expander, QtCore.Qt.MouseButton.LeftButton)
assert not widget.criteria_frame.isVisible()
qtbot.mouseClick(widget.criteria_expander, QtCore.Qt.MouseButton.LeftButton)
assert widget.criteria_frame.isVisible()
else:
assert not widget.criteria_frame.isVisible()
qtbot.mouseClick(widget.criteria_expander, QtCore.Qt.MouseButton.LeftButton)
assert widget.criteria_frame.isVisible()
qtbot.mouseClick(widget.criteria_expander, QtCore.Qt.MouseButton.LeftButton)
assert not widget.criteria_frame.isVisible()
def test_basetab_notes_expander(qtbot: QtBot) -> None:
"""Test BaseAnalysisTabWidget notes expander behavior."""
widget = tab.BaseAnalysisTabWidget(None, None, enable_criteria=True)
qtbot.addWidget(widget)
widget.show()
if tab.NOTES_DEFAULT_CHECKED:
assert widget.notes.isVisible()
qtbot.mouseClick(widget.notes_expander, QtCore.Qt.MouseButton.LeftButton)
assert not widget.notes.isVisible()
qtbot.mouseClick(widget.notes_expander, QtCore.Qt.MouseButton.LeftButton)
assert widget.notes.isVisible()
else:
assert not widget.notes.isVisible()
qtbot.mouseClick(widget.notes_expander, QtCore.Qt.MouseButton.LeftButton)
assert widget.notes.isVisible()
qtbot.mouseClick(widget.notes_expander, QtCore.Qt.MouseButton.LeftButton)
assert not widget.notes.isVisible()
def test_tableresulttab_layout(qtbot: QtBot) -> None:
"""Test TableResultTabWidget layout."""
mock_query = build_mock_query()
widget = tab.TableResultTabWidget(mock_query, None, enable_criteria=True)
qtbot.addWidget(widget)
results_widget = cast(QtWidgets.QTabWidget, widget.results)
assert widget.analysis_layout.columnCount() == 5
assert widget.analysis_layout.rowCount() == 4
assert widget.analysis_layout.itemAtPosition(0, 3).widget() == widget.criteria_expander
assert widget.analysis_layout.itemAtPosition(0, 4).widget() == widget.notes_expander
assert widget.analysis_layout.itemAtPosition(1, 0).widget() == widget.criteria_frame
assert widget.analysis_layout.itemAtPosition(2, 0).widget() == results_widget
assert widget.analysis_layout.itemAtPosition(3, 0).widget() == widget.notes
assert results_widget.count() == 2
assert results_widget.widget(0) == widget.table_results
assert results_widget.widget(1) == widget.raw_results