From c90da2cf9653489e570785fdebc6c2ff10f7c188 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 22 Jun 2017 16:53:24 +0200
Subject: [PATCH] rejection when highlighting with invalid model id

---
 .../src/main/js/map/overlay/UserDbOverlay.js  |  6 ++++-
 .../test/js/map/overlay/UserDbOverlay-test.js | 26 +++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/frontend-js/src/main/js/map/overlay/UserDbOverlay.js b/frontend-js/src/main/js/map/overlay/UserDbOverlay.js
index 0e6713ec37..0eaebd1384 100644
--- a/frontend-js/src/main/js/map/overlay/UserDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/UserDbOverlay.js
@@ -56,7 +56,11 @@ UserDbOverlay.prototype._createIdentifiedElements = function(params, sourceArray
       return Promise.reject(new Error("Element already highlighted: " + element.getId()));
     }
     result.push(element);
-    promises.push(self.getMap().getSubmapById(element.getModelId()).getModel().getByIdentifiedElement(element));
+    var submap = self.getMap().getSubmapById(element.getModelId());
+    if (submap === null) {
+      return Promise.reject(new InvalidArgumentError("Submap doesn't exist: " + result[i].getModelId()));
+    }
+    promises.push(submap.getModel().getByIdentifiedElement(element));
   }
   return Promise.all(promises).then(function(elementsFromModel) {
     for (var i = 0; i < elementsFromModel.length; i++) {
diff --git a/frontend-js/src/test/js/map/overlay/UserDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/UserDbOverlay-test.js
index 6ee50e21e1..4d6b8106d6 100644
--- a/frontend-js/src/test/js/map/overlay/UserDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/UserDbOverlay-test.js
@@ -85,4 +85,30 @@ describe('UserDbOverlay', function() {
     });
   });
 
+  it("add to unexisting map", function() {
+    var overlay;
+    return ServerConnector.getProject().then(function(project) {
+      var options = helper.createCustomMapOptions(project);
+      var map = new CustomMap(options);
+      overlay = new UserDbOverlay({
+        map : map,
+        name : 'user'
+      });
+      return overlay.addMarker({
+        element : {
+          id : 329171,
+          modelId : -1,
+          type : "ALIAS"
+        },
+        options : {
+          type : "SURFACE"
+        }
+      });
+    }).then(function() {
+      assert.ok(false, "Exception expected");
+    }, function(error) {
+      assert.ok(error instanceof InvalidArgumentError)
+    });
+  });
+
 });
-- 
GitLab