1 # SPDX-License-Identifier: GPL-3.0-or-later
3 # This file is part of Nominatim. (https://nominatim.org)
5 # Copyright (C) 2025 by the Nominatim developer community.
6 # For a full list of authors see the git log.
9 import nominatim_db.cli
12 class MockParamCapture:
13 """ Mock that records the parameters with which a function was called
14 as well as the number of calls.
16 def __init__(self, retval=0):
18 self.return_value = retval
20 self.last_kwargs = None
22 def __call__(self, *args, **kwargs):
25 self.last_kwargs = kwargs
26 return self.return_value
29 class AsyncMockParamCapture:
30 """ Mock that records the parameters with which a function was called
31 as well as the number of calls.
33 def __init__(self, retval=0):
35 self.return_value = retval
37 self.last_kwargs = None
39 async def __call__(self, *args, **kwargs):
42 self.last_kwargs = kwargs
43 return self.return_value
47 def __init__(self, *args, **kwargs):
48 self.update_sql_functions_called = False
49 self.finalize_import_called = False
50 self.update_statistics_called = False
51 self.update_word_tokens_called = False
53 def update_sql_functions(self, *args, **kwargs):
54 self.update_sql_functions_called = True
56 def finalize_import(self, *args, **kwargs):
57 self.finalize_import_called = True
59 def update_statistics(self, *args, **kwargs):
60 self.update_statistics_called = True
62 def update_word_tokens(self, *args, **kwargs):
63 self.update_word_tokens_called = True
68 """ Call the nominatim main function with the correct paths set.
69 Returns a function that can be called with the desired CLI arguments.
71 def _call_nominatim(*args):
72 return nominatim_db.cli.nominatim(osm2pgsql_path='OSM2PGSQL NOT AVAILABLE',
75 return _call_nominatim
79 def mock_func_factory(monkeypatch):
80 def get_mock(module, func):
81 mock = MockParamCapture()
83 monkeypatch.setattr(module, func, mock)
90 def async_mock_func_factory(monkeypatch):
91 def get_mock(module, func):
92 mock = AsyncMockParamCapture()
94 monkeypatch.setattr(module, func, mock)
101 def cli_tokenizer_mock(monkeypatch):
102 tok = DummyTokenizer()
103 monkeypatch.setattr(nominatim_db.tokenizer.factory, 'get_tokenizer_for_db',
105 monkeypatch.setattr(nominatim_db.tokenizer.factory, 'create_tokenizer',