X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/00959fac57d6c1b35d009e68ad857989ae71de6c..a33f2c0f5ba43df533b6e137f9151fe67feb20a1:/test/python/test_tools_import_special_phrases.py diff --git a/test/python/test_tools_import_special_phrases.py b/test/python/test_tools_import_special_phrases.py index f452c353..1b4ab191 100644 --- a/test/python/test_tools_import_special_phrases.py +++ b/test/python/test_tools_import_special_phrases.py @@ -2,14 +2,15 @@ Tests for import special phrases methods of the class SPImporter. """ -from nominatim.tools import SpecialPhrase -from nominatim.tools import SPWikiLoader from nominatim.errors import UsageError from pathlib import Path import tempfile from shutil import copyfile import pytest -from nominatim.tools import SPImporter +from nominatim.tools.special_phrases.sp_importer import SPImporter +from nominatim.tools.special_phrases.sp_wiki_loader import SPWikiLoader +from nominatim.tools.special_phrases.sp_csv_loader import SPCsvLoader +from nominatim.tools.special_phrases.special_phrase import SpecialPhrase TEST_BASE_DIR = Path(__file__) / '..' / '..' @@ -184,10 +185,11 @@ def test_remove_non_existent_tables_from_db(sp_importer, default_phrases, tables_result[0][0] == 'place_classtype_testclasstypetable_to_keep' ) -def test_import_from_wiki(monkeypatch, temp_db_conn, def_config, sp_importer, - placex_table, tokenizer_mock): +@pytest.mark.parametrize("should_replace", [(True), (False)]) +def test_import_phrases(monkeypatch, temp_db_conn, def_config, sp_importer, + placex_table, tokenizer_mock, should_replace): """ - Check that the main import_from_wiki() method is well executed. + Check that the main import_phrases() method is well executed. It should create the place_classtype table, the place_id and centroid indexes, grand access to the web user and executing the SQL functions for amenities. It should also update the database well by deleting or preserving existing entries @@ -200,9 +202,11 @@ def test_import_from_wiki(monkeypatch, temp_db_conn, def_config, sp_importer, CREATE TABLE place_classtype_amenity_animal_shelter(); CREATE TABLE place_classtype_wrongclass_wrongtype();""") - monkeypatch.setattr('nominatim.tools.SPWikiLoader._get_wiki_content', mock_get_wiki_content) + monkeypatch.setattr('nominatim.tools.special_phrases.sp_wiki_loader.SPWikiLoader._get_wiki_content', + mock_get_wiki_content) + tokenizer = tokenizer_mock() - sp_importer.import_phrases(tokenizer) + sp_importer.import_phrases(tokenizer, should_replace) assert len(tokenizer.analyser_cache['special_phrases']) == 18 @@ -213,7 +217,8 @@ def test_import_from_wiki(monkeypatch, temp_db_conn, def_config, sp_importer, assert check_placeid_and_centroid_indexes(temp_db_conn, class_test, type_test) assert check_grant_access(temp_db_conn, def_config.DATABASE_WEBUSER, class_test, type_test) assert check_table_exist(temp_db_conn, 'amenity', 'animal_shelter') - assert not check_table_exist(temp_db_conn, 'wrong_class', 'wrong_type') + if should_replace: + assert not check_table_exist(temp_db_conn, 'wrong_class', 'wrong_type') #Format (query, should_return_something_bool) use to easily execute all asserts queries_tests = set() @@ -234,7 +239,8 @@ def test_import_from_wiki(monkeypatch, temp_db_conn, def_config, sp_importer, WHERE table_schema='public' AND table_name = 'place_classtype_wrongclass_wrongtype'; """ - queries_tests.add((query_wrong_table, False)) + if should_replace: + queries_tests.add((query_wrong_table, False)) with temp_db_conn.cursor() as temp_db_cursor: for query in queries_tests: