]> git.openstreetmap.org Git - nominatim.git/blob - test/python/tools/test_sp_csv_loader.py
e6185fd61a0698fc36dafddc723eee23ac6af906
[nominatim.git] / test / python / tools / test_sp_csv_loader.py
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 #
3 # This file is part of Nominatim. (https://nominatim.org)
4 #
5 # Copyright (C) 2024 by the Nominatim developer community.
6 # For a full list of authors see the git log.
7 """
8     Tests for methods of the SPCsvLoader class.
9 """
10 import pytest
11
12 from nominatim_core.errors import UsageError
13 from nominatim_db.tools.special_phrases.sp_csv_loader import SPCsvLoader
14 from nominatim_db.tools.special_phrases.special_phrase import SpecialPhrase
15
16 @pytest.fixture
17 def sp_csv_loader(src_dir):
18     """
19         Return an instance of SPCsvLoader.
20     """
21     csv_path = (src_dir / 'test' / 'testdata' / 'sp_csv_test.csv').resolve()
22     loader = SPCsvLoader(csv_path)
23     return loader
24
25
26 def test_generate_phrases(sp_csv_loader):
27     """
28         Test method parse_csv()
29         Should return the right SpecialPhrase objects.
30     """
31     phrases = list(sp_csv_loader.generate_phrases())
32
33     assert len(phrases) == 42
34     assert len(set(phrases)) == 41
35
36     assert SpecialPhrase('Billboard', 'advertising', 'billboard', '-') in phrases
37     assert SpecialPhrase('Zip Lines', 'aerialway', 'zip_line', '-') in phrases
38
39
40 def test_invalid_cvs_file():
41     """
42         Test method check_csv_validity()
43         It should raise an exception when file with a
44         different exception than .csv is given.
45     """
46     loader = SPCsvLoader('test.wrong')
47
48     with pytest.raises(UsageError, match='not a csv file'):
49         next(loader.generate_phrases())