Skip to content

v0.2.47..v0.2.48 changeset ChangesetResourceUploadCreateTest.java

Garret Voltz edited this page Sep 27, 2019 · 1 revision
diff --git a/hoot-services/src/test/java/hoot/services/controllers/osm/changeset/ChangesetResourceUploadCreateTest.java b/hoot-services/src/test/java/hoot/services/controllers/osm/changeset/ChangesetResourceUploadCreateTest.java
index 5e408ee..e7a18d2 100644
--- a/hoot-services/src/test/java/hoot/services/controllers/osm/changeset/ChangesetResourceUploadCreateTest.java
+++ b/hoot-services/src/test/java/hoot/services/controllers/osm/changeset/ChangesetResourceUploadCreateTest.java
@@ -22,7 +22,7 @@
  * This will properly maintain the copyright information. DigitalGlobe
  * copyrights will be updated automatically.
  *
- * @copyright Copyright (C) 2016, 2017 DigitalGlobe (http://www.digitalglobe.com/)
+ * @copyright Copyright (C) 2016, 2017, 2019 DigitalGlobe (http://www.digitalglobe.com/)
  */
 package hoot.services.controllers.osm.changeset;
 
@@ -1178,49 +1178,35 @@ public class ChangesetResourceUploadCreateTest extends OSMResourceTestAbstract {
         }
     }
 
-    // haven't been able to find any good way to handle this yet, so I'm
-    // choosing not to for now
-    @Test(expected = ClientErrorException.class)
+    @Test
     @Category(UnitTest.class)
-    public void testUploadCreateRelationWhereRelationReferencesAnotherRelationThatComesAfterIt() throws Exception {
+    public void testUploadModifyRelationWithNegativeIdReference() throws Exception {
         BoundingBox originalBounds = OSMTestUtils.createStartingTestBounds();
         long changesetId = OSMTestUtils.createTestChangeset(originalBounds);
         Set<Long> nodeIds = OSMTestUtils.createTestNodes(changesetId, originalBounds);
         Long[] nodeIdsArr = nodeIds.toArray(new Long[nodeIds.size()]);
         Set<Long> wayIds = OSMTestUtils.createTestWays(changesetId, nodeIds);
-        Long[] wayIdsArr = wayIds.toArray(new Long[wayIds.size()]);
-        Set<Long> relationIds = OSMTestUtils.createTestRelations(changesetId, nodeIds, wayIds);
+        Set<Long> relationIds = OSMTestUtils.createTestRelationsNegative(changesetId, nodeIds, wayIds);
+        Long[] relationIdsArr = relationIds.toArray(new Long[relationIds.size()]);
 
-        // Try to create a relation that references a relation that is
-        // referenced after it in the request.  This isn't supported by the server, so the request should fail and no
-        // data in the system should be modified.
-        try {
-            target("api/0.6/changeset/" + changesetId + "/upload")
+        // Do a modify upload where a member is referencing a relation with a negative id.
+        // Should pass since we allow negative ids in the hoot database now
+        Document responseData = target("api/0.6/changeset/" + changesetId + "/upload")
                 .queryParam("mapId", String.valueOf(mapId))
                 .request(MediaType.TEXT_XML)
                 .post(Entity.entity(
-                     "<osmChange version=\"0.3\" generator=\"iD\">" +
-                         "<create>" +
-                             "<relation id=\"-1\" version=\"0\" changeset=\"" + changesetId + "\" >" +
-                                 "<member type=\"way\" role=\"role1\" ref=\"" + wayIdsArr[0] + "\"></member>" +
-                                 "<member type=\"relation\" role=\"role1\" ref=\"-2\"></member>" +
-                             "</relation>" +
-                             "<relation id=\"-2\" version=\"0\" changeset=\"" + changesetId + "\" >" +
-                                 "<member type=\"way\" role=\"role1\" ref=\"" + wayIdsArr[0] + "\"></member>" +
-                                 "<member type=\"node\" role=\"role1\" ref=\"" + nodeIdsArr[0] + "\"></member>" +
-                             "</relation>" +
-                         "</create>" +
-                         "<modify/>" +
-                         "<delete if-unused=\"true\"/>" +
-                     "</osmChange>", MediaType.TEXT_XML_TYPE), Document.class);
-        }
-        catch (ClientErrorException e) {
-            Response r = e.getResponse();
-            assertEquals(Response.Status.PRECONDITION_FAILED, Response.Status.fromStatusCode(r.getStatus()));
-            assertTrue(r.readEntity(String.class).contains("does not exist for relation"));
-            OSMTestUtils.verifyTestDataUnmodified(originalBounds, changesetId, nodeIds, wayIds, relationIds);
-            throw e;
-        }
+                    "<osmChange version=\"0.3\" generator=\"iD\">" +
+                        "<create>" +
+                            "<relation id=\"-1\" version=\"0\" changeset=\"" + changesetId + "\" >" +
+                                "<member ref=\"" + nodeIdsArr[0] + "\" role=\"role1\" type=\"node\"/>"+
+                                "<member ref=\"" + relationIdsArr[0] + "\" role=\"role1\" type=\"relation\"/>" +
+                            "</relation>" +
+                        "</create>" +
+                        "<modify/>" +
+                        "<delete if-unused=\"true\"/>" +
+                    "</osmChange>", MediaType.TEXT_XML_TYPE), Document.class);
+
+        assertNotNull(responseData);
     }
 
     @Test(expected = BadRequestException.class)
Clone this wiki locally