From 6fe1386cfcddc468f0977de26a4b86f79d885907 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 11 Apr 2019 13:45:13 +0200 Subject: [PATCH] when project update is rejected make sure that the valid project state is restored --- frontend-js/src/main/js/ServerConnector.js | 6 +++-- .../main/js/gui/admin/EditProjectDialog.js | 23 +++++++++++++++---- .../js/gui/admin/EditProjectDialog-test.js | 20 ++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index ad46d788b6..43e9589646 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1083,7 +1083,7 @@ ServerConnector.getProject = function (projectId) { } project = self._projectsById[projectId]; - return Promise.all(promises).then(function() { + return Promise.all(promises).then(function () { return self.getModels(projectId); }).then(function (models) { project.setModels(models); @@ -1141,7 +1141,9 @@ ServerConnector.updateProject = function (project) { }).then(function () { return project; }).catch(function (error) { - return self._processUpdateError(error); + return self.getProject(project.getProjectId()).then(function (project) { + return self._processUpdateError(error); + }); }); }; diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index d54381e890..27d96692e2 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -551,6 +551,9 @@ EditProjectDialog.prototype.createUserPrivilegeColumns = function () { */ EditProjectDialog.prototype.init = function () { var self = this; + self.getProject().addListener("onreload", function(){ + self.projectDataUpdated(self.getProject()); + }); return self.initUsersTab().then(function () { return self.refresh() }).then(function () { @@ -560,12 +563,11 @@ EditProjectDialog.prototype.init = function () { /** * - * @returns {Promise} + * @param {Project} project */ -EditProjectDialog.prototype.refresh = function () { - var self = this; - var element = self.getElement(); - var project = self.getProject(); + +EditProjectDialog.prototype.projectDataUpdated = function (project) { + var element = this.getElement(); $("[name='projectName']", element).val(xss(project.getName())); $("[name='projectId']", element).html(xss(project.getProjectId())); $("[name='projectVersion']", element).val(xss(project.getVersion())); @@ -586,6 +588,17 @@ EditProjectDialog.prototype.refresh = function () { email = xss(project.getNotifyEmail()); } $("[name='projectNotifyEmail']", element).val(email); +}; + +/** + * + * @returns {Promise} + */ +EditProjectDialog.prototype.refresh = function () { + var self = this; + var project = self.getProject(); + + self.projectDataUpdated(project); return self.refreshUsers().then(function () { diff --git a/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js b/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js index edd4449c6a..6af8d9c557 100644 --- a/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js +++ b/frontend-js/src/test/js/gui/admin/EditProjectDialog-test.js @@ -60,6 +60,26 @@ describe('EditProjectDialog', function () { dialog.destroy(); }); }); + + it('update project rejected', function () { + helper.loginAsAdmin(); + var dialog, input; + return createDialog().then(function (result) { + dialog = result; + return dialog.init(); + }).then(function () { + input = $("[name='projectDisease']"); + input.val("XYZ"); + return input[0].parentNode.onchange(); + }).then(function () { + assert.notOk("Error expected"); + }).catch(function (e) { + assert.notEqual(input.val(), "XYZ", "After reject the data should be restored"); + }).then(function () { + return dialog.destroy(); + }); + }); + it('saveOverlay', function () { helper.loginAsAdmin(); var dialog; -- GitLab