mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-11-24 14:32:29 +03:00
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
"""
|
|
Tests for functions to maintain the artificial postcode table.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from nominatim.tools import postcodes
|
|
import dummy_tokenizer
|
|
|
|
@pytest.fixture
|
|
def tokenizer():
|
|
return dummy_tokenizer.DummyTokenizer(None, None)
|
|
|
|
@pytest.fixture
|
|
def postcode_table(temp_db_with_extensions, temp_db_cursor, table_factory,
|
|
placex_table, word_table):
|
|
table_factory('location_postcode',
|
|
""" place_id BIGINT,
|
|
parent_place_id BIGINT,
|
|
rank_search SMALLINT,
|
|
rank_address SMALLINT,
|
|
indexed_status SMALLINT,
|
|
indexed_date TIMESTAMP,
|
|
country_code varchar(2),
|
|
postcode TEXT,
|
|
geometry GEOMETRY(Geometry, 4326)""")
|
|
temp_db_cursor.execute('CREATE SEQUENCE seq_place')
|
|
temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION token_normalized_postcode(postcode TEXT)
|
|
RETURNS TEXT AS $$ BEGIN RETURN postcode; END; $$ LANGUAGE plpgsql;
|
|
""")
|
|
|
|
|
|
def test_import_postcodes_empty(dsn, temp_db_cursor, postcode_table, tmp_path, tokenizer):
|
|
postcodes.import_postcodes(dsn, tmp_path, tokenizer)
|
|
|
|
assert temp_db_cursor.table_exists('gb_postcode')
|
|
assert temp_db_cursor.table_exists('us_postcode')
|
|
assert temp_db_cursor.table_rows('location_postcode') == 0
|
|
|
|
|
|
def test_import_postcodes_from_placex(dsn, temp_db_cursor, postcode_table, tmp_path, tokenizer):
|
|
temp_db_cursor.execute("""
|
|
INSERT INTO placex (place_id, country_code, address, geometry)
|
|
VALUES (1, 'xx', '"postcode"=>"9486"', 'SRID=4326;POINT(10 12)')
|
|
""")
|
|
|
|
postcodes.import_postcodes(dsn, tmp_path, tokenizer)
|
|
|
|
rows = temp_db_cursor.row_set(""" SELECT postcode, country_code,
|
|
ST_X(geometry), ST_Y(geometry)
|
|
FROM location_postcode""")
|
|
print(rows)
|
|
assert len(rows) == 1
|
|
assert rows == set((('9486', 'xx', 10, 12), ))
|
|
|