]> git.openstreetmap.org Git - nominatim.git/commitdiff
add tests for updating linked features
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 27 Nov 2016 12:39:43 +0000 (13:39 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 30 Dec 2016 21:58:58 +0000 (22:58 +0100)
test/bdd/db/update/linked_places.feature [new file with mode: 0644]
test/bdd/steps/queries.py

diff --git a/test/bdd/db/update/linked_places.feature b/test/bdd/db/update/linked_places.feature
new file mode 100644 (file)
index 0000000..17ca800
--- /dev/null
@@ -0,0 +1,91 @@
+@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 |
+
index acb7ee91411af4a48567b58069df4bf314f4313d..f37f7e7b54cc60a874cc8de35bcc7ab552af8f6b 100644 (file)
@@ -44,8 +44,8 @@ class SearchResponse(object):
                     assert_equal(str(res[h]), str(row[h]))
 
 
                     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'),
     """ Query directly via PHP script.
     """
     cmd = [os.path.join(context.nominatim.build_dir, 'utils', 'query.php'),
@@ -57,6 +57,9 @@ def query_cmd(context, query):
             if value:
                 cmd.extend(('--' + h, value))
 
             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()
     proc = subprocess.Popen(cmd, cwd=context.nominatim.build_dir,
                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     (outp, err) = proc.communicate()