diff --git a/frontend-js/src/main/js/map/overlay/UserDbOverlay.js b/frontend-js/src/main/js/map/overlay/UserDbOverlay.js index 0e6713ec37f420d1e9e0caebbb9345e1f0bae2fa..0eaebd13844670e9c9aac3c7a07a87303d76f520 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 6ee50e21e1dea5c39b6f18960dc634db98cfea1f..4d6b8106d6c28958cad4dca17377b61e963ba6ae 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) + }); + }); + });