55work 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
1110import pytest
11+ from pytest_mock import MockerFixture
1212from robot .parsing .lexer .tokens import Token
1313
1414from robotcode .robot .diagnostics .keyword_finder import (
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
182182class 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
243243class 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