X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/bb175cc95898de420781867973b38d033c187e81..04d5f674ebb8629fd0035aad70c876c7dd77643d:/test/python/tools/test_sp_csv_loader.py?ds=sidebyside diff --git a/test/python/tools/test_sp_csv_loader.py b/test/python/tools/test_sp_csv_loader.py index 80d5989e..9d0ad9cc 100644 --- a/test/python/tools/test_sp_csv_loader.py +++ b/test/python/tools/test_sp_csv_loader.py @@ -1,60 +1,49 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of Nominatim. (https://nominatim.org) +# +# Copyright (C) 2024 by the Nominatim developer community. +# For a full list of authors see the git log. """ Tests for methods of the SPCsvLoader class. """ import pytest -from nominatim.errors import UsageError -from nominatim.tools.special_phrases.sp_csv_loader import SPCsvLoader +from nominatim_db.errors import UsageError +from nominatim_db.tools.special_phrases.sp_csv_loader import SPCsvLoader +from nominatim_db.tools.special_phrases.special_phrase import SpecialPhrase -def test_parse_csv(sp_csv_loader): +@pytest.fixture +def sp_csv_loader(src_dir): """ - Test method parse_csv() - Should return the right SpecialPhrase objects. + Return an instance of SPCsvLoader. """ - phrases = sp_csv_loader.parse_csv() - assert check_phrases_content(phrases) + csv_path = (src_dir / 'test' / 'testdata' / 'sp_csv_test.csv').resolve() + loader = SPCsvLoader(csv_path) + return loader + -def test_next(sp_csv_loader): +def test_generate_phrases(sp_csv_loader): """ - Test objects returned from the next() method. - It should return all SpecialPhrases objects of - the sp_csv_test.csv special phrases. + Test method parse_csv() + Should return the right SpecialPhrase objects. """ - phrases = next(sp_csv_loader) - assert check_phrases_content(phrases) + phrases = list(sp_csv_loader.generate_phrases()) + + assert len(phrases) == 42 + assert len(set(phrases)) == 41 + + assert SpecialPhrase('Billboard', 'advertising', 'billboard', '-') in phrases + assert SpecialPhrase('Zip Lines', 'aerialway', 'zip_line', '-') in phrases -def test_check_csv_validity(sp_csv_loader): + +def test_invalid_cvs_file(): """ Test method check_csv_validity() It should raise an exception when file with a different exception than .csv is given. """ - sp_csv_loader.csv_path = 'test.csv' - sp_csv_loader.check_csv_validity() - sp_csv_loader.csv_path = 'test.wrong' - with pytest.raises(UsageError): - assert sp_csv_loader.check_csv_validity() - -def check_phrases_content(phrases): - """ - Asserts that the given phrases list contains - the right phrases of the sp_csv_test.csv special phrases. - """ - return len(phrases) > 1 \ - and any(p.p_label == 'Billboard' - and p.p_class == 'advertising' - and p.p_type == 'billboard' - and p.p_operator == '-' for p in phrases) \ - and any(p.p_label == 'Zip Lines' - and p.p_class == 'aerialway' - and p.p_type == 'zip_line' - and p.p_operator == '-' for p in phrases) + loader = SPCsvLoader('test.wrong') -@pytest.fixture -def sp_csv_loader(src_dir): - """ - Return an instance of SPCsvLoader. - """ - csv_path = (src_dir / 'test' / 'testdata' / 'sp_csv_test.csv').resolve() - loader = SPCsvLoader(csv_path) - return loader + with pytest.raises(UsageError, match='not a csv file'): + next(loader.generate_phrases())