]> git.openstreetmap.org Git - nominatim.git/blob - test/python/api/test_api_deletable_v1.py
Merge pull request #3519 from lonvia/api-error-handling
[nominatim.git] / test / python / api / test_api_deletable_v1.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 the deletable v1 API call.
9 """
10 import json
11 from pathlib import Path
12
13 import pytest
14
15 from fake_adaptor import FakeAdaptor, FakeError, FakeResponse
16
17 import nominatim_api.v1.server_glue as glue
18
19 class TestDeletableEndPoint:
20
21     @pytest.fixture(autouse=True)
22     def setup_deletable_table(self, temp_db_cursor, table_factory, temp_db_with_extensions):
23         table_factory('import_polygon_delete',
24                       definition='osm_id bigint, osm_type char(1), class text, type text',
25                       content=[(345, 'N', 'boundary', 'administrative'),
26                                (781, 'R', 'landuse', 'wood'),
27                                (781, 'R', 'landcover', 'grass')])
28         table_factory('placex',
29                       definition="""place_id bigint, osm_id bigint, osm_type char(1),
30                                     class text, type text, name HSTORE, country_code char(2)""",
31                       content=[(1, 345, 'N', 'boundary', 'administrative', {'old_name': 'Former'}, 'ab'),
32                                (2, 781, 'R', 'landuse', 'wood', {'name': 'Wood'}, 'cd'),
33                                (3, 781, 'R', 'landcover', 'grass', None, 'cd')])
34
35
36
37     @pytest.mark.asyncio
38     async def test_deletable(self, api):
39         a = FakeAdaptor()
40
41         resp = await glue.deletable_endpoint(api, a)
42         results = json.loads(resp.output)
43
44         results.sort(key=lambda r: r['place_id'])
45
46         assert results == [{'place_id': 1, 'country_code': 'ab', 'name': None,
47                             'osm_id': 345, 'osm_type': 'N',
48                             'class': 'boundary', 'type': 'administrative'},
49                            {'place_id': 2, 'country_code': 'cd', 'name': 'Wood',
50                             'osm_id': 781, 'osm_type': 'R',
51                             'class': 'landuse', 'type': 'wood'},
52                            {'place_id': 3, 'country_code': 'cd', 'name': None,
53                             'osm_id': 781, 'osm_type': 'R',
54                             'class': 'landcover', 'type': 'grass'}]