diff --git a/nominatim/tools/special_phrases/special_phrase.py b/nominatim/tools/special_phrases/special_phrase.py
index da7968ca..3b6aef85 100644
--- a/nominatim/tools/special_phrases/special_phrase.py
+++ b/nominatim/tools/special_phrases/special_phrase.py
@@ -16,4 +16,5 @@ class SpecialPhrase():
# Hack around a bug where building=yes was imported with quotes into the wiki
self.p_type = re.sub(r'\"|"', '', p_type.strip())
# Needed if some operator in the wiki are not written in english
+ p_operator = p_operator.strip().lower()
self.p_operator = '-' if p_operator not in ('near', 'in') else p_operator
diff --git a/test/python/test_tools_sp_wiki_loader.py b/test/python/test_tools_sp_wiki_loader.py
index 35b413d3..f29528a5 100644
--- a/test/python/test_tools_sp_wiki_loader.py
+++ b/test/python/test_tools_sp_wiki_loader.py
@@ -30,7 +30,7 @@ def test_parse_xml(sp_wiki_loader, xml_wiki_content):
Should return the right SpecialPhrase objects.
"""
phrases = sp_wiki_loader.parse_xml(xml_wiki_content)
- assert check_phrases_content(phrases)
+ check_phrases_content(phrases)
def test_next(sp_wiki_loader):
@@ -40,15 +40,29 @@ def test_next(sp_wiki_loader):
the 'en' special phrases.
"""
phrases = next(sp_wiki_loader)
- assert check_phrases_content(phrases)
+ check_phrases_content(phrases)
def check_phrases_content(phrases):
"""
Asserts that the given phrases list contains
the right phrases of the 'en' special phrases.
"""
- return len(phrases) > 1 \
- and any(p.p_label == 'Embassies' and p.p_class == 'amenity' and p.p_type == 'embassy'
- and p.p_operator == '-' for p in phrases) \
- and any(p.p_label == 'Zip Line' and p.p_class == 'aerialway' and p.p_type == 'zip_line'
- and p.p_operator == '-' for p in phrases)
+ assert set((p.p_label, p.p_class, p.p_type, p.p_operator) for p in phrases) ==\
+ {('Zip Line', 'aerialway', 'zip_line', '-'),
+ ('Zip Lines', 'aerialway', 'zip_line', '-'),
+ ('Zip Line in', 'aerialway', 'zip_line', 'in'),
+ ('Zip Lines in', 'aerialway', 'zip_line', 'in'),
+ ('Zip Line near', 'aerialway', 'zip_line', 'near'),
+ ('Animal shelter', 'amenity', 'animal_shelter', '-'),
+ ('Animal shelters', 'amenity', 'animal_shelter', '-'),
+ ('Animal shelter in', 'amenity', 'animal_shelter', 'in'),
+ ('Animal shelters in', 'amenity', 'animal_shelter', 'in'),
+ ('Animal shelter near', 'amenity', 'animal_shelter', 'near'),
+ ('Animal shelters near', 'amenity', 'animal_shelter', 'near'),
+ ('Drinking Water near', 'amenity', 'drinking_water', 'near'),
+ ('Water', 'amenity', 'drinking_water', '-'),
+ ('Water in', 'amenity', 'drinking_water', 'in'),
+ ('Water near', 'amenity', 'drinking_water', 'near'),
+ ('Embassy', 'amenity', 'embassy', '-'),
+ ('Embassys', 'amenity', 'embassy', '-'),
+ ('Embassies', 'amenity', 'embassy', '-')}
diff --git a/test/testdata/special_phrases_test_content.txt b/test/testdata/special_phrases_test_content.txt
index 739ded0d..e790ca58 100644
--- a/test/testdata/special_phrases_test_content.txt
+++ b/test/testdata/special_phrases_test_content.txt
@@ -70,9 +70,9 @@
wikitext
text/x-wiki
-== en == {| class="wikitable sortable" |- ! Word / Phrase !! Key !! Value !! Operator !! Plural |- | Zip Line || aerialway || zip_line || - || N |- | Zip Lines || aerialway || zip_line || - || Y |- | Zip Line in || aerialway || zip_line || in || N |- | Zip Lines in || aerialway || zip_line || in || Y |- | Zip Line near || aerialway || zip_line || near || N |- | Animal shelter || amenity || animal_shelter || - || N |- | Animal shelters || amenity || animal_shelter || - || Y |- | Animal shelter in || amenity || animal_shelter || in || N |- | Animal shelters in || amenity || animal_shelter || in || Y |- | Animal shelter near || amenity || animal_shelter || near|| N |- | Animal shelters near || amenity || animal_shelter || near|| Y |- | Drinking Water near || amenity || drinking_water || near || N |- | Water || amenity || drinking_water || - || N |- | Water in || amenity || drinking_water || in || N |- | Water near || amenity || drinking_water || near || N |- | Embassy || amenity || embassy || - || N |- | Embassys || amenity || embassy || - || Y |- | Embassies || amenity || embassy || - || Y |- |Coworkings near |amenity |coworking_space |near |Y |} [[Category:Word list]]
+== en == {| class="wikitable sortable" |- ! Word / Phrase !! Key !! Value !! Operator !! Plural |- | Zip Line || aerialway || zip_line || - || N |- | Zip Lines || aerialway || zip_line || - || Y |- | Zip Line in || aerialway || zip_line || in || N |- | Zip Lines in || aerialway || zip_line || in || Y |- | Zip Line near || aerialway || zip_line || near || N |- | Animal shelter || amenity || animal_shelter || - || N |- | Animal shelters || amenity || animal_shelter || - || Y |- | Animal shelter in || amenity || animal_shelter || in || N |- | Animal shelters in || amenity || animal_shelter || in || Y |- | Animal shelter near || amenity || animal_shelter || near|| N |- | Animal shelters near || amenity || animal_shelter || NEAR|| Y |- | Drinking Water near || amenity || drinking_water || near || N |- | Water || amenity || drinking_water || - || N |- | Water in || amenity || drinking_water || In || N |- | Water near || amenity || drinking_water || near || N |- | Embassy || amenity || embassy || - || N |- | Embassys || amenity || embassy || - || Y |- | Embassies || amenity || embassy || - || Y |- |Coworkings near |amenity |coworking_space |near |Y |} [[Category:Word list]]
cst5x7tt58izti1pxzgljf27tx8qjcj
-
\ No newline at end of file
+