]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/tools/test_country_info.py
Merge pull request #2629 from tareqpi/country-names-yaml-configuration
[nominatim.git] / test / python / tools / test_country_info.py
index 2abb97cd3d57e5b56927623d895109b25178b74b..63142d2643d23982b3ba240b176a84d013f1a867 100644 (file)
@@ -12,20 +12,24 @@ import pytest
 
 from nominatim.tools import country_info
 
-@pytest.fixture(autouse=True)
+
 def read_config(def_config):
     country_info.setup_country_config(def_config)
 
+
 @pytest.mark.parametrize("no_partitions", (True, False))
 def test_setup_country_tables(src_dir, temp_db_with_extensions, dsn, temp_db_cursor,
                               def_config, no_partitions):
+    read_config(def_config)
     country_info.setup_country_tables(dsn, src_dir / 'data', no_partitions)
 
     assert temp_db_cursor.table_exists('country_name')
     assert temp_db_cursor.table_rows('country_name') == \
-             temp_db_cursor.scalar('SELECT count(DISTINCT country_code) FROM country_name')
+        temp_db_cursor.scalar(
+            'SELECT count(DISTINCT country_code) FROM country_name')
 
-    partitions = temp_db_cursor.row_set("SELECT DISTINCT partition FROM country_name")
+    partitions = temp_db_cursor.row_set(
+        "SELECT DISTINCT partition FROM country_name")
     if no_partitions:
         assert partitions == {(0, )}
     else:
@@ -37,7 +41,8 @@ def test_setup_country_tables(src_dir, temp_db_with_extensions, dsn, temp_db_cur
 
 @pytest.mark.parametrize("languages", (None, ' fr,en'))
 def test_create_country_names(temp_db_with_extensions, temp_db_conn, temp_db_cursor,
-                              table_factory, tokenizer_mock, languages):
+                              table_factory, tokenizer_mock, languages, def_config):
+    read_config(def_config)
 
     table_factory('country_name', 'country_code varchar(2), name hstore',
                   content=(('us', '"name"=>"us1","name:af"=>"us2"'),
@@ -51,11 +56,66 @@ def test_create_country_names(temp_db_with_extensions, temp_db_conn, temp_db_cur
 
     assert len(tokenizer.analyser_cache['countries']) == 2
 
-    result_set = {k: set(v.values()) for k, v in tokenizer.analyser_cache['countries']}
+    result_set = {k: set(v.values())
+                  for k, v in tokenizer.analyser_cache['countries']}
 
     if languages:
-        assert result_set == {'us' : set(('us', 'us1', 'United States')),
-                              'fr' : set(('fr', 'Fra', 'Fren'))}
+        assert result_set == {'us': set(('us', 'us1', 'United States')),
+                              'fr': set(('fr', 'Fra', 'Fren'))}
     else:
-        assert result_set == {'us' : set(('us', 'us1', 'us2', 'United States')),
-                              'fr' : set(('fr', 'Fra', 'Fren'))}
+        assert result_set == {'us': set(('us', 'us1', 'us2', 'United States')),
+                              'fr': set(('fr', 'Fra', 'Fren'))}
+
+
+def test_setup_country_config_languages_not_loaded(project_env):
+    (project_env.project_dir / 'country_settings.yaml').write_text("""
+de:
+    partition: 3
+    names:
+        name:
+            default: Deutschland
+""")
+    country_info._COUNTRY_INFO._info = None
+    country_info.setup_country_config(project_env)
+    assert country_info._COUNTRY_INFO._info == {'de': {'partition': 3,
+                                                       'languages': [], 'names': {'name': {'default': 'Deutschland'}}}}
+
+
+def test_setup_country_config_name_not_loaded(project_env):
+    (project_env.project_dir / 'country_settings.yaml').write_text("""
+de:
+    partition: 3
+    languages: de
+    names:
+""")
+    country_info._COUNTRY_INFO._info = None
+    country_info.setup_country_config(project_env)
+    assert country_info._COUNTRY_INFO._info == {'de': {'partition': 3,
+                                                       'languages': ['de'], 'names': {'name': {}}}}
+
+
+def test_setup_country_config_names_not_loaded(project_env):
+    (project_env.project_dir / 'country_settings.yaml').write_text("""
+de:
+    partition: 3
+    languages: de
+""")
+    country_info._COUNTRY_INFO._info = None
+    country_info.setup_country_config(project_env)
+    assert country_info._COUNTRY_INFO._info == {'de': {'partition': 3,
+                                                       'languages': ['de'], 'names': {'name': {}}}}
+
+
+def test_setup_country_config_special_character(project_env):
+    (project_env.project_dir / 'country_settings.yaml').write_text("""
+bq:
+    partition: 250
+    languages: nl
+    names: 
+        name: 
+            default: "\\N"
+""")
+    country_info._COUNTRY_INFO._info = None
+    country_info.setup_country_config(project_env)
+    assert country_info._COUNTRY_INFO._info == {'bq': {'partition': 250,
+                                                       'languages': ['nl'], 'names': {'name': {'default': '\x85'}}}}