forked from hans/Nominatim
add factory for query analyzer
This commit is contained in:
57
test/python/api/search/test_query_analyzer_factory.py
Normal file
57
test/python/api/search/test_query_analyzer_factory.py
Normal file
@@ -0,0 +1,57 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#
|
||||
# This file is part of Nominatim. (https://nominatim.org)
|
||||
#
|
||||
# Copyright (C) 2023 by the Nominatim developer community.
|
||||
# For a full list of authors see the git log.
|
||||
"""
|
||||
Tests for query analyzer creation.
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from nominatim.api import NominatimAPIAsync
|
||||
from nominatim.api.search.query_analyzer_factory import make_query_analyzer
|
||||
from nominatim.api.search.icu_tokenizer import ICUQueryAnalyzer
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_import_icu_tokenizer(table_factory):
|
||||
table_factory('nominatim_properties',
|
||||
definition='property TEXT, value TEXT',
|
||||
content=(('tokenizer', 'icu'),
|
||||
('tokenizer_import_normalisation', ':: lower();'),
|
||||
('tokenizer_import_transliteration', "'1' > '/1/'; 'ä' > 'ä '")))
|
||||
|
||||
api = NominatimAPIAsync(Path('/invalid'), {})
|
||||
async with api.begin() as conn:
|
||||
ana = await make_query_analyzer(conn)
|
||||
|
||||
assert isinstance(ana, ICUQueryAnalyzer)
|
||||
await api.close()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_import_missing_property(table_factory):
|
||||
api = NominatimAPIAsync(Path('/invalid'), {})
|
||||
table_factory('nominatim_properties',
|
||||
definition='property TEXT, value TEXT')
|
||||
|
||||
async with api.begin() as conn:
|
||||
with pytest.raises(ValueError, match='Property.*not found'):
|
||||
await make_query_analyzer(conn)
|
||||
await api.close()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_import_missing_module(table_factory):
|
||||
api = NominatimAPIAsync(Path('/invalid'), {})
|
||||
table_factory('nominatim_properties',
|
||||
definition='property TEXT, value TEXT',
|
||||
content=(('tokenizer', 'missing'),))
|
||||
|
||||
async with api.begin() as conn:
|
||||
with pytest.raises(RuntimeError, match='Tokenizer not found'):
|
||||
await make_query_analyzer(conn)
|
||||
await api.close()
|
||||
|
||||
Reference in New Issue
Block a user