Repository: ambari Updated Branches: refs/heads/trunk c3eff5074 -> 3ee81bce1
AMBARI-8114. Unknown component state shown and empty during save configs. (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3ee81bce Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3ee81bce Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3ee81bce Branch: refs/heads/trunk Commit: 3ee81bce18be5e8772b593839cc12b1451d96681 Parents: c3eff50 Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Mon Nov 3 13:01:52 2014 +0200 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Mon Nov 3 13:01:52 2014 +0200 ---------------------------------------------------------------------- .../controllers/main/service/info/configs.js | 24 ++++++++-- .../main/service/info/config_test.js | 50 +++++++++++++++++++- 2 files changed, 68 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/3ee81bce/ambari-web/app/controllers/main/service/info/configs.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js index f72fd66..1673831 100644 --- a/ambari-web/app/controllers/main/service/info/configs.js +++ b/ambari-web/app/controllers/main/service/info/configs.js @@ -1383,6 +1383,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM /** * Show save configs popup + * @method showSaveConfigsPopup + * @return {App.ModalPopup} */ showSaveConfigsPopup: function (header, flag, message, messageClass, value, status, urlParams) { var self = this; @@ -1390,7 +1392,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM this.set('forceTransition', flag); self.loadStep(); } - App.ModalPopup.show({ + return App.ModalPopup.show({ header: header, primary: Em.I18n.t('ok'), secondary: null, @@ -1435,17 +1437,31 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM context: view }); }, + /** + * Map components for their hosts + * Return format: + * <code> + * { + * host1: [component1, component2, ...], + * host2: [component3, component4, ...] + * } + * </code> + * @return {object} + */ setComponents = function (item, components) { item.host_components.forEach(function (c) { var name = c.HostRoles.host_name; if (!components[name]) { components[name] = []; - } else { - components[name].push(App.format.role(item.ServiceComponentInfo.component_name)); } + components[name].push(App.format.role(item.ServiceComponentInfo.component_name)); }); return components; }, + /** + * Map result of <code>setComponents</code> to array + * @return {{name: string, components: string}[]} + */ setHosts = function (components) { var hosts = []; Em.keys(components).forEach(function (key) { @@ -1490,7 +1506,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM this.set('isLoaded', true); }, didInsertElement: function () { - App.ajax.send({ + return App.ajax.send({ name: 'components.filter_by_status', sender: this, data: { http://git-wip-us.apache.org/repos/asf/ambari/blob/3ee81bce/ambari-web/test/controllers/main/service/info/config_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/info/config_test.js b/ambari-web/test/controllers/main/service/info/config_test.js index 0c60d9e..2cca645 100644 --- a/ambari-web/test/controllers/main/service/info/config_test.js +++ b/ambari-web/test/controllers/main/service/info/config_test.js @@ -262,7 +262,7 @@ describe("App.MainServiceInfoConfigsController", function () { }); }); - describe("rollingRestartStaleConfigSlaveComponents", function () { + describe("#rollingRestartStaleConfigSlaveComponents", function () { var tests = [ { componentName: { @@ -1388,7 +1388,7 @@ describe("App.MainServiceInfoConfigsController", function () { }); }); - describe("setCompareDefaultGroupConfig", function() { + describe("#setCompareDefaultGroupConfig", function() { beforeEach(function() { sinon.stub(mainServiceInfoConfigsController, "getComparisonConfig").returns("compConfig"); sinon.stub(mainServiceInfoConfigsController, "getMockComparisonConfig").returns("mockConfig"); @@ -1419,4 +1419,50 @@ describe("App.MainServiceInfoConfigsController", function () { }); }); + + describe('#showSaveConfigsPopup', function () { + + var bodyView; + + describe('#bodyClass', function () { + beforeEach(function() { + sinon.stub(App.ajax, 'send', Em.K); + // default implementation + bodyView = mainServiceInfoConfigsController.showSaveConfigsPopup().get('bodyClass').create({ + parentView: Em.View.create() + }); + }); + + afterEach(function() { + App.ajax.send.restore(); + }); + + describe('#componentsFilterSuccessCallback', function () { + it('check components with unknown state', function () { + bodyView = mainServiceInfoConfigsController.showSaveConfigsPopup('', true, '', {}, '', 'unknown', '').get('bodyClass').create({ + parentView: Em.View.create() + }); + bodyView.componentsFilterSuccessCallback({ + items: [ + { + ServiceComponentInfo: { + total_count: 4, + started_count: 2, + installed_count: 1, + component_name: 'c1' + }, + host_components: [ + {HostRoles: {host_name: 'h1'}} + ] + } + ] + }); + var unknownHosts = bodyView.get('unknownHosts'); + expect(unknownHosts.length).to.equal(1); + expect(unknownHosts[0]).to.eql({name: 'h1', components: 'C1'}); + }); + }); + }); + }); + });