X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/c26f323bf5e7679c8f4411862de32fae20709cf8..436cb9229b95e42e7a76b4dba841bc114df1cd5c:/test/python/test_cli.py?ds=inline diff --git a/test/python/test_cli.py b/test/python/test_cli.py index 36da3cd2..92b42372 100644 --- a/test/python/test_cli.py +++ b/test/python/test_cli.py @@ -1,6 +1,7 @@ """ Tests for command line interface wrapper. """ +import psycopg2 import pytest import nominatim.cli @@ -48,6 +49,7 @@ def test_cli_help(capsys): captured = capsys.readouterr() assert captured.out.startswith('usage:') + @pytest.mark.parametrize("command,script", [ (('import', '--continue', 'load-data'), 'setup'), (('freeze',), 'setup'), @@ -65,6 +67,60 @@ def test_legacy_commands_simple(mock_run_legacy, command, script): assert mock_run_legacy.called == 1 assert mock_run_legacy.last_args[0] == script + '.php' + +@pytest.mark.parametrize("name,oid", [('file', 'foo.osm'), ('diff', 'foo.osc'), + ('node', 12), ('way', 8), ('relation', 32)]) +def test_add_data_command(mock_run_legacy, name, oid): + assert 0 == call_nominatim('add-data', '--' + name, str(oid)) + + assert mock_run_legacy.called == 1 + assert mock_run_legacy.last_args == ('update.php', '--import-' + name, oid) + + +@pytest.mark.parametrize("params,do_bnds,do_ranks", [ + ([], 1, 1), + (['--boundaries-only'], 1, 0), + (['--no-boundaries'], 0, 1), + (['--boundaries-only', '--no-boundaries'], 0, 0)]) +def test_index_command(monkeypatch, temp_db, params, do_bnds, do_ranks): + with psycopg2.connect(database=temp_db) as conn: + with conn.cursor() as cur: + cur.execute("CREATE TABLE import_status (indexed bool)") + bnd_mock = MockParamCapture() + monkeypatch.setattr(nominatim.cli.Indexer, 'index_boundaries', bnd_mock) + rank_mock = MockParamCapture() + monkeypatch.setattr(nominatim.cli.Indexer, 'index_by_rank', rank_mock) + + assert 0 == call_nominatim('index', *params) + + assert bnd_mock.called == do_bnds + assert rank_mock.called == do_ranks + + +@pytest.mark.parametrize("command,params", [ + ('postcodes', ('update.php', '--calculate-postcodes')), + ('word-counts', ('update.php', '--recompute-word-counts')), + ('address-levels', ('update.php', '--update-address-levels')), + ('functions', ('setup.php',)), + ('wiki-data', ('setup.php', '--import-wikipedia-articles')), + ('importance', ('update.php', '--recompute-importance')), + ('website', ('setup.php', '--setup-website')), + ]) +def test_refresh_command(mock_run_legacy, command, params): + assert 0 == call_nominatim('refresh', '--' + command) + + assert mock_run_legacy.called == 1 + assert len(mock_run_legacy.last_args) >= len(params) + assert mock_run_legacy.last_args[:len(params)] == params + + +def test_refresh_importance_computed_after_wiki_import(mock_run_legacy): + assert 0 == call_nominatim('refresh', '--importance', '--wiki-data') + + assert mock_run_legacy.called == 2 + assert mock_run_legacy.last_args == ('update.php', '--recompute-importance') + + @pytest.mark.parametrize("params", [ ('search', '--query', 'new'), ('reverse', '--lat', '0', '--lon', '0'),