From 7c9f179cb240e57042b8f5158de130673f8133fd Mon Sep 17 00:00:00 2001 From: joonalai <33314057+Joonalai@users.noreply.github.com> Date: Mon, 27 Nov 2023 20:39:53 +0200 Subject: [PATCH] WIP use original QgsMessageBar as base class [#24] --- src/pytest_qgis/mock_qgis_classes.py | 33 ++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/pytest_qgis/mock_qgis_classes.py b/src/pytest_qgis/mock_qgis_classes.py index 2bcaa49..c2094e3 100644 --- a/src/pytest_qgis/mock_qgis_classes.py +++ b/src/pytest_qgis/mock_qgis_classes.py @@ -15,15 +15,16 @@ # # You should have received a copy of the GNU General Public License # along with pytest-qgis. If not, see . - - +import typing from typing import Dict, List +from qgis import _core from qgis.core import Qgis +from qgis.gui import QgsMessageBar as QgsMessageBarOriginal from qgis.PyQt.QtCore import QObject -class MockMessageBar(QObject): +class MockMessageBar(QgsMessageBarOriginal): """Mocked message bar to hold the messages.""" def __init__(self) -> None: @@ -39,9 +40,23 @@ def get_messages(self, level: int) -> List[str]: """Used to test which messages have been logged.""" return self.messages[level] - def pushMessage( # noqa: N802 - self, title: str, text: str, level: int, duration: int - ) -> None: - """A mocked method for pushing a message to the bar.""" - msg = f"{title}:{text}" - self.messages[level].append(msg) + @typing.overload + def pushMessage(self, text: typing.Optional[str], level: _core.Qgis.MessageLevel = ..., duration: int = ...) -> None: ... + + @typing.overload + def pushMessage(self, title: typing.Optional[str], text: typing.Optional[str], level: _core.Qgis.MessageLevel = ..., duration: int = ...) -> None: ... + + @typing.overload + def pushMessage(self, title: typing.Optional[str], text: typing.Optional[str], showMore: typing.Optional[str], level: _core.Qgis.MessageLevel = ..., duration: int = ...) -> None: ... + + def pushMessage(self, text: typing.Optional[str], level: _core.Qgis.MessageLevel = ..., + duration: int = ...) -> None: + super().pushMessage(text, level, duration) + + # def pushMessage( # noqa: N802 + # self, title: str, text: str, level: int, duration: int + # ) -> None: + # """A mocked method for pushing a message to the bar.""" + # msg = f"{title}:{text}" + # self.messages[level].append(msg) +