Skip to content

Commit 441618c

Browse files
committed
refactor(tests): standardize on pytest-mock and shared analyzer fixtures
Replaces direct unittest.mock usage with the project's existing pytest-mock convention so tests are stricter (autospec) and new tests need less boilerplate.
1 parent be36e61 commit 441618c

3 files changed

Lines changed: 144 additions & 142 deletions

File tree

tests/robotcode/robot/diagnostics/test_bdd_prefixes.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
work correctly with non-English BDD prefixes like French.
66
"""
77

8-
from typing import Optional, Set
9-
from unittest.mock import MagicMock
8+
from typing import Any, Optional, Set
109

1110
import pytest
11+
from pytest_mock import MockerFixture
1212
from robot.parsing.lexer.tokens import Token
1313

1414
from robotcode.robot.diagnostics.keyword_finder import (
@@ -62,8 +62,8 @@
6262
}
6363

6464

65-
def _mock_namespace(bdd_prefixes: Optional[Set[str]] = None) -> MagicMock:
66-
ns = MagicMock()
65+
def _mock_namespace(mocker: MockerFixture, bdd_prefixes: Optional[Set[str]] = None) -> Any:
66+
ns = mocker.MagicMock()
6767
if bdd_prefixes is not None:
6868
ns.languages.bdd_prefixes = bdd_prefixes
6969
else:
@@ -180,8 +180,8 @@ def test_sorted_longest_first(self) -> None:
180180

181181

182182
class TestModelHelperSplitBddPrefix:
183-
def test_english_default(self) -> None:
184-
ns = _mock_namespace(None)
183+
def test_english_default(self, mocker: MockerFixture) -> None:
184+
ns = _mock_namespace(mocker, None)
185185
token = _make_token("Given something happens")
186186
bdd, rest = ModelHelper.split_bdd_prefix(ns, token)
187187
assert bdd is not None
@@ -190,16 +190,16 @@ def test_english_default(self) -> None:
190190
assert rest.value == "something happens"
191191
assert rest.col_offset == 6
192192

193-
def test_no_prefix(self) -> None:
194-
ns = _mock_namespace(None)
193+
def test_no_prefix(self, mocker: MockerFixture) -> None:
194+
ns = _mock_namespace(mocker, None)
195195
token = _make_token("Do Something")
196196
bdd, rest = ModelHelper.split_bdd_prefix(ns, token)
197197
assert bdd is None
198198
assert rest is not None
199199
assert rest.value == "Do Something"
200200

201-
def test_single_word_no_split(self) -> None:
202-
ns = _mock_namespace(None)
201+
def test_single_word_no_split(self, mocker: MockerFixture) -> None:
202+
ns = _mock_namespace(mocker, None)
203203
token = _make_token("Keyword")
204204
bdd, rest = ModelHelper.split_bdd_prefix(ns, token)
205205
assert bdd is None
@@ -220,8 +220,8 @@ def test_single_word_no_split(self) -> None:
220220
("Sachant My Keyword", "Sachant", "My Keyword"),
221221
],
222222
)
223-
def test_french_split(self, text: str, expected_prefix: str, expected_rest: str) -> None:
224-
ns = _mock_namespace(FRENCH_BDD_PREFIXES)
223+
def test_french_split(self, mocker: MockerFixture, text: str, expected_prefix: str, expected_rest: str) -> None:
224+
ns = _mock_namespace(mocker, FRENCH_BDD_PREFIXES)
225225
token = _make_token(text)
226226
bdd, rest = ModelHelper.split_bdd_prefix(ns, token)
227227
assert bdd is not None, f"Should find BDD prefix in '{text}'"
@@ -231,8 +231,8 @@ def test_french_split(self, text: str, expected_prefix: str, expected_rest: str)
231231
assert rest.col_offset == len(expected_prefix) + 1
232232

233233
@pytest.mark.skipif(RF_VERSION < (6, 0), reason="Language support requires RF >= 6.0")
234-
def test_french_no_prefix(self) -> None:
235-
ns = _mock_namespace(FRENCH_BDD_PREFIXES)
234+
def test_french_no_prefix(self, mocker: MockerFixture) -> None:
235+
ns = _mock_namespace(mocker, FRENCH_BDD_PREFIXES)
236236
token = _make_token("My Keyword")
237237
bdd, rest = ModelHelper.split_bdd_prefix(ns, token)
238238
assert bdd is None
@@ -241,15 +241,15 @@ def test_french_no_prefix(self) -> None:
241241

242242

243243
class TestModelHelperStripBddPrefix:
244-
def test_english_default(self) -> None:
245-
ns = _mock_namespace(None)
244+
def test_english_default(self, mocker: MockerFixture) -> None:
245+
ns = _mock_namespace(mocker, None)
246246
token = _make_token("Given something happens")
247247
result = ModelHelper.strip_bdd_prefix(ns, token)
248248
assert result.value == "something happens"
249249
assert result.col_offset == 6
250250

251-
def test_no_prefix_unchanged(self) -> None:
252-
ns = _mock_namespace(None)
251+
def test_no_prefix_unchanged(self, mocker: MockerFixture) -> None:
252+
ns = _mock_namespace(mocker, None)
253253
token = _make_token("Do Something")
254254
result = ModelHelper.strip_bdd_prefix(ns, token)
255255
assert result.value == "Do Something"
@@ -264,8 +264,8 @@ def test_no_prefix_unchanged(self) -> None:
264264
("Mais que My Keyword", "My Keyword"),
265265
],
266266
)
267-
def test_french_strip(self, text: str, expected_rest: str) -> None:
268-
ns = _mock_namespace(FRENCH_BDD_PREFIXES)
267+
def test_french_strip(self, mocker: MockerFixture, text: str, expected_rest: str) -> None:
268+
ns = _mock_namespace(mocker, FRENCH_BDD_PREFIXES)
269269
token = _make_token(text)
270270
result = ModelHelper.strip_bdd_prefix(ns, token)
271271
assert result.value == expected_rest
@@ -289,13 +289,13 @@ class TestModelHelperIsBddToken:
289289
("Et que keyword", False),
290290
],
291291
)
292-
def test_french_is_bdd_token(self, text: str, expected: bool) -> None:
293-
ns = _mock_namespace(FRENCH_BDD_PREFIXES)
292+
def test_french_is_bdd_token(self, mocker: MockerFixture, text: str, expected: bool) -> None:
293+
ns = _mock_namespace(mocker, FRENCH_BDD_PREFIXES)
294294
token = _make_token(text)
295295
assert ModelHelper.is_bdd_token(ns, token) == expected, f"is_bdd_token('{text}') should be {expected}"
296296

297-
def test_english_default(self) -> None:
298-
ns = _mock_namespace(None)
297+
def test_english_default(self, mocker: MockerFixture) -> None:
298+
ns = _mock_namespace(mocker, None)
299299
for prefix in ["Given", "When", "Then", "And", "But"]:
300300
token = _make_token(prefix)
301301
assert ModelHelper.is_bdd_token(ns, token) is True, f"'{prefix}' should be a BDD token"
@@ -304,8 +304,8 @@ def test_english_default(self) -> None:
304304
assert ModelHelper.is_bdd_token(ns, token) is False
305305

306306
@pytest.mark.skipif(RF_VERSION < (6, 0), reason="Language support requires RF >= 6.0")
307-
def test_german_prefixes(self) -> None:
308-
ns = _mock_namespace(GERMAN_BDD_PREFIXES)
307+
def test_german_prefixes(self, mocker: MockerFixture) -> None:
308+
ns = _mock_namespace(mocker, GERMAN_BDD_PREFIXES)
309309
for prefix in ["Angenommen", "Wenn", "Dann", "Und", "Aber"]:
310310
token = _make_token(prefix)
311311
assert ModelHelper.is_bdd_token(ns, token) is True, f"'{prefix}' should be a BDD token"

0 commit comments

Comments
 (0)