From 2c23fd5973dc82fffed2e5477019babb3ade6167 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 24 May 2017 17:16:46 +0200 Subject: [PATCH] PublicationListDialog.show returns a promise --- .../js/gui/leftPanel/PublicationListDialog.js | 18 +++++++++++------- .../leftPanel/PublicationListDialog-test.js | 19 +++++++++++++------ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js index 91eb2f9568..275c840b77 100644 --- a/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js +++ b/frontend-js/src/main/js/gui/leftPanel/PublicationListDialog.js @@ -111,14 +111,18 @@ PublicationListDialog.prototype.show = function() { $(self.getElement()).dialog("open"); if (!$.fn.DataTable.isDataTable(self.tableElement)) { - $(self.tableElement).dataTable({ - serverSide : true, - ordering : false, - searching : false, - ajax : function(data, callback, settings) { - self._dataTableAjaxCall(data, callback, settings); - }, + return new Promise(function(resolve, reject) { + $(self.tableElement).dataTable({ + serverSide : true, + ordering : false, + searching : false, + ajax : function(data, callback, settings) { + resolve(self._dataTableAjaxCall(data, callback, settings)); + }, + }); }); + } else { + return Promise.resolve(); } }; diff --git a/frontend-js/src/test/js/gui/leftPanel/PublicationListDialog-test.js b/frontend-js/src/test/js/gui/leftPanel/PublicationListDialog-test.js index adcbff2422..d5c94b2d23 100644 --- a/frontend-js/src/test/js/gui/leftPanel/PublicationListDialog-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/PublicationListDialog-test.js @@ -32,19 +32,26 @@ describe('PublicationListDialog', function() { }); it('_dataTableAjaxCall', function() { + var dialog; + var callbackCalled = false; return ServerConnector.getProject().then(function(project) { - var div = testDiv; - var dialog = new PublicationListDialog({ - element : div, + dialog = new PublicationListDialog({ + element : testDiv, customMap : helper.createCustomMap(project), }); return dialog._dataTableAjaxCall({ start : 0, length : 10 - }, function() { - }, {}).then(function() { - dialog.destroy(); + }, function(){ + callbackCalled = true; }); + }).then(function() { + assert.ok(callbackCalled); + dialog.destroy(); + }).catch(function(exception) { + dialog.destroy(); + logger.error(exception); + assert.ok(false); }); }); -- GitLab