--- /dev/null
+@DB
+Feature: Updates of linked places
+ Tests that linked places are correctly added and deleted.
+
+ Scenario: Add linked place when linking relation is renamed
+ Given the places
+ | osm | class | type | name | geometry |
+ | N1 | place | city | foo | 0 0 |
+ And the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ When importing
+ And searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | R |
+ When updating places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foobar | 8 | poly-area:0.1 |
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | - |
+ When searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | N |
+
+ Scenario: Add linked place when linking relation is removed
+ Given the places
+ | osm | class | type | name | geometry |
+ | N1 | place | city | foo | 0 0 |
+ And the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ When importing
+ And searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | R |
+ When marking for delete R1
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | - |
+ When searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | N |
+
+ Scenario: Remove linked place when linking relation is added
+ Given the places
+ | osm | class | type | name | geometry |
+ | N1 | place | city | foo | 0 0 |
+ When importing
+ And searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | N |
+ When updating places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | R1 |
+ When searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | R |
+
+ Scenario: Remove linked place when linking relation is renamed
+ Given the places
+ | osm | class | type | name | geometry |
+ | N1 | place | city | foo | 0 0 |
+ And the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foobar | 8 | poly-area:0.1 |
+ When importing
+ And searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | N |
+ When updating places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | R1 |
+ When searching for "foo" with dups
+ Then results contain
+ | osm_type |
+ | R |
+
assert_equal(str(res[h]), str(row[h]))
-@when(u'searching for "(?P<query>.*)"')
-def query_cmd(context, query):
+@when(u'searching for "(?P<query>.*)"(?P<dups> with dups)?')
+def query_cmd(context, query, dups):
""" Query directly via PHP script.
"""
cmd = [os.path.join(context.nominatim.build_dir, 'utils', 'query.php'),
if value:
cmd.extend(('--' + h, value))
+ if dups:
+ cmd.extend(('--dedupe', '0'))
+
proc = subprocess.Popen(cmd, cwd=context.nominatim.build_dir,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(outp, err) = proc.communicate()