Skip to content

Commit

Permalink
Use MagicMockup to mockup iface for tests...
Browse files Browse the repository at this point in the history
  • Loading branch information
signedav committed Aug 21, 2024
1 parent 974bdd8 commit 7a870d5
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 33 deletions.
30 changes: 18 additions & 12 deletions linking_relation_editor/gui/linking_child_manager_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from qgis.PyQt.QtWidgets import QAction, QDialog, QMessageBox
from qgis.PyQt.uic import loadUiType
from qgis.utils import iface
from unittest.mock import MagicMock

from linking_relation_editor.core.model.attribute_form_delegate import (
AttributeFormDelegate,
Expand Down Expand Up @@ -180,18 +181,23 @@ def __init__(

self._feature_filter_widget = FeatureFilterWidget(self)
self.mFooterHBoxLayout.insertWidget(0, self._feature_filter_widget)
if iface: # TODO how to use iface in tests?
self._feature_filter_widget.init(
self._layer,
self._editorContext,
self._featuresModelFilterLeft,
iface.messageBar(),
QgsMessageBar.defaultMessageTimeout(),
)
if self._filterExpression:
self._feature_filter_widget.setFilterExpression(self._filterExpression,QgsAttributeForm.ReplaceFilter, True)
else:
self._feature_filter_widget.filterShowAll()

# used for untittest
if not iface:
i = MagicMock()
else:
i = iface
self._feature_filter_widget.init(
self._layer,
self._editorContext,
self._featuresModelFilterLeft,
i.messageBar(),
QgsMessageBar.defaultMessageTimeout(),
)
if self._filterExpression:
self._feature_filter_widget.setFilterExpression(self._filterExpression,QgsAttributeForm.ReplaceFilter, True)
else:
self._feature_filter_widget.filterShowAll()

# Signal slots
self.accepted.connect(self._accepting)
Expand Down
38 changes: 17 additions & 21 deletions linking_relation_editor/tests/test_linking_child_manager_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ def test_passed_filter_expression(self):
break

self.assertTrue(parentFeature.isValid())

dialog = LinkingChildManagerDialog(
self.mLayer1,
self.mLayer2,
Expand All @@ -329,25 +329,20 @@ def test_passed_filter_expression(self):
QgsRelation(),
QgsAttributeEditorContext(),
False,
None,
"name LIKE '%formerly known as Prince%'",
{},
None,
)

self.assertEqual(dialog.mLayerNameLabel.text(), self.mLayer1.name())

# all entries
# one entry
# "Layer1-0: The Artist formerly known as Prince"
# "Layer1-1: Martina formerly known as Prisca"
self.assertEqual(dialog._featuresModelFilterLeft.rowCount(), 2)
self.assertEqual(dialog._featuresModelFilterLeft.rowCount(), 1)
self.assertEqual(
dialog._featuresModelFilterLeft.data(dialog._featuresModelFilterLeft.index(0, 0), Qt.DisplayRole),
"Layer1-0: The Artist formerly known as Prince",
)
self.assertEqual(
dialog._featuresModelFilterLeft.data(dialog._featuresModelFilterLeft.index(1, 0), Qt.DisplayRole),
"Layer1-1: Martina formerly known as Prisca",
)

dialog = LinkingChildManagerDialog(
self.mLayer1,
Expand All @@ -357,20 +352,25 @@ def test_passed_filter_expression(self):
QgsRelation(),
QgsAttributeEditorContext(),
False,
"name LIKE '%formerly known as Prince%'",
"name LIKE '%formerly%'",
{},
None,
)

self.assertEqual(dialog.mLayerNameLabel.text(), self.mLayer1.name())

# one entry
# all entries with formerly
# "Layer1-0: The Artist formerly known as Prince"
self.assertEqual(dialog._featuresModelFilterLeft.rowCount(), 1)
# "Layer1-1: Martina formerly known as Prisca"
self.assertEqual(dialog._featuresModelFilterLeft.rowCount(), 2)
self.assertEqual(
dialog._featuresModelFilterLeft.data(dialog._featuresModelFilterLeft.index(0, 0), Qt.DisplayRole),
"Layer1-0: The Artist formerly known as Prince",
)
self.assertEqual(
dialog._featuresModelFilterLeft.data(dialog._featuresModelFilterLeft.index(1, 0), Qt.DisplayRole),
"Layer1-1: Martina formerly known as Prisca",
)

dialog = LinkingChildManagerDialog(
self.mLayer1,
Expand All @@ -380,22 +380,18 @@ def test_passed_filter_expression(self):
QgsRelation(),
QgsAttributeEditorContext(),
False,
"name LIKE '%formerly%'",
"name LIKE '%Prisca%'",
{},
None,
)

self.assertEqual(dialog.mLayerNameLabel.text(), self.mLayer1.name())

# all entries with formerly
# one entry
# "Layer1-0: The Artist formerly known as Prince"
# "Layer1-1: Martina formerly known as Prisca"
self.assertEqual(dialog._featuresModelFilterLeft.rowCount(), 2)
self.assertEqual(dialog._featuresModelFilterLeft.rowCount(), 1)
self.assertEqual(
dialog._featuresModelFilterLeft.data(dialog._featuresModelFilterLeft.index(0, 0), Qt.DisplayRole),
"Layer1-0: The Artist formerly known as Prince",
)
self.assertEqual(
dialog._featuresModelFilterLeft.data(dialog._featuresModelFilterLeft.index(1, 0), Qt.DisplayRole),
"Layer1-1: Martina formerly known as Prisca",
)
)

0 comments on commit 7a870d5

Please sign in to comment.