]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/cli/conftest.py
Merge pull request #2737 from lonvia/reset-linking-ranks
[nominatim.git] / test / python / cli / conftest.py
index 183696a97e4968b3e72f6e7257977e2bd0796672..420740cfc65568abf9b2dae1a53e3245ae6a434d 100644 (file)
@@ -1,7 +1,50 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
 import pytest
 
 import nominatim.cli
 
+class MockParamCapture:
+    """ Mock that records the parameters with which a function was called
+        as well as the number of calls.
+    """
+    def __init__(self, retval=0):
+        self.called = 0
+        self.return_value = retval
+        self.last_args = None
+        self.last_kwargs = None
+
+    def __call__(self, *args, **kwargs):
+        self.called += 1
+        self.last_args = args
+        self.last_kwargs = kwargs
+        return self.return_value
+
+
+class DummyTokenizer:
+    def __init__(self, *args, **kwargs):
+        self.update_sql_functions_called = False
+        self.finalize_import_called = False
+        self.update_statistics_called = False
+        self.update_word_tokens_called = False
+
+    def update_sql_functions(self, *args):
+        self.update_sql_functions_called = True
+
+    def finalize_import(self, *args):
+        self.finalize_import_called = True
+
+    def update_statistics(self):
+        self.update_statistics_called = True
+
+    def update_word_tokens(self):
+        self.update_word_tokens_called = True
+
+
 @pytest.fixture
 def cli_call(src_dir):
     """ Call the nominatim main function with the correct paths set.
@@ -19,3 +62,31 @@ def cli_call(src_dir):
 
     return _call_nominatim
 
+
+@pytest.fixture
+def mock_run_legacy(monkeypatch):
+    mock = MockParamCapture()
+    monkeypatch.setattr(nominatim.cli, 'run_legacy_script', mock)
+    return mock
+
+
+@pytest.fixture
+def mock_func_factory(monkeypatch):
+    def get_mock(module, func):
+        mock = MockParamCapture()
+        mock.func_name = func
+        monkeypatch.setattr(module, func, mock)
+        return mock
+
+    return get_mock
+
+
+@pytest.fixture
+def cli_tokenizer_mock(monkeypatch):
+    tok = DummyTokenizer()
+    monkeypatch.setattr(nominatim.tokenizer.factory, 'get_tokenizer_for_db',
+                        lambda *args: tok)
+    monkeypatch.setattr(nominatim.tokenizer.factory, 'create_tokenizer',
+                        lambda *args: tok)
+
+    return tok