Repository: ambari Updated Branches: refs/heads/trunk 2913de53c -> bba27c813
AMBARI-17606. Configs validation: UI warnings (not stack_advisor) are displayed only if service tab was previously opened (alexantonenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bba27c81 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bba27c81 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bba27c81 Branch: refs/heads/trunk Commit: bba27c81351eaefe8b3e147936b72548eccfffbe Parents: 2913de5 Author: Alex Antonenko <[email protected]> Authored: Thu Jul 7 15:18:13 2016 +0300 Committer: Alex Antonenko <[email protected]> Committed: Thu Jul 7 19:09:55 2016 +0300 ---------------------------------------------------------------------- ambari-web/app/controllers/wizard.js | 5 +- .../configs/config_recommendation_parser.js | 392 ++++++++++--------- ...onfig_with_override_recommendation_parser.js | 172 ++++---- ambari-web/app/utils/config.js | 4 +- .../config_recommendation_parser_test.js | 8 +- ambari-web/test/utils/config_test.js | 4 +- 6 files changed, 298 insertions(+), 287 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/bba27c81/ambari-web/app/controllers/wizard.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js index 9dba647..3bf3c05 100644 --- a/ambari-web/app/controllers/wizard.js +++ b/ambari-web/app/controllers/wizard.js @@ -928,10 +928,7 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM _configProperties.get('filename'), // need to invert boolean because this argument will be inverted in method body !_configProperties.get('isUserProperty'), - { - value: _configProperties.get('value'), - isRequired: _configProperties.get('isRequired') - } + _configProperties.getProperties('value', 'isRequired', 'errorMessage', 'warnMessage') ); configProperty = App.config.mergeStaticProperties(configProperty, _configProperties, [], ['name', 'filename', 'isUserProperty', 'value']); http://git-wip-us.apache.org/repos/asf/ambari/blob/bba27c81/ambari-web/app/mixins/common/configs/config_recommendation_parser.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/config_recommendation_parser.js b/ambari-web/app/mixins/common/configs/config_recommendation_parser.js index 7c5d2ae..ec5358b 100644 --- a/ambari-web/app/mixins/common/configs/config_recommendation_parser.js +++ b/ambari-web/app/mixins/common/configs/config_recommendation_parser.js @@ -21,7 +21,7 @@ var validator = require('utils/validator'); App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { - stepConfigs: [], + stepConfigs: [], modifiedFileNames: [], @@ -36,20 +36,20 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { this.get('modifiedFileNames').push(filename); }, - /** - * Method that goes through all configs - * and apply recommendations using callbacks - * - * @param recommendationObject - * @param configs - * @param parentProperties - * @param configGroup - * @param updateCallback - * @param removeCallback - * @param updateBoundariesCallback - */ - parseRecommendations: function(recommendationObject, configs, parentProperties, configGroup, - updateCallback, removeCallback, updateBoundariesCallback) { + /** + * Method that goes through all configs + * and apply recommendations using callbacks + * + * @param recommendationObject + * @param configs + * @param parentProperties + * @param configGroup + * @param updateCallback + * @param removeCallback + * @param updateBoundariesCallback + */ + parseRecommendations: function(recommendationObject, configs, parentProperties, configGroup, + updateCallback, removeCallback, updateBoundariesCallback) { App.assertObject(recommendationObject); App.assertArray(configs); @@ -57,25 +57,25 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { App.assertFunction(removeCallback); App.assertFunction(updateBoundariesCallback); - var propertiesToDelete = []; - configs.forEach(function (config) { - var name = Em.get(config, 'name'), fileName = Em.get(config, 'filename'), - recommendations = recommendationObject[App.config.getConfigTagFromFileName(fileName)]; + var propertiesToDelete = []; + configs.forEach(function (config) { + var name = Em.get(config, 'name'), fileName = Em.get(config, 'filename'), + recommendations = recommendationObject[App.config.getConfigTagFromFileName(fileName)]; - if (recommendations) { + if (recommendations) { - if (recommendations.properties) { - var recommendedValue = App.config.formatValue(recommendations.properties[name]); - if (!Em.isNone(recommendedValue)) { - /** update config **/ - updateCallback(config, recommendedValue, parentProperties, configGroup); + if (recommendations.properties) { + var recommendedValue = App.config.formatValue(recommendations.properties[name]); + if (!Em.isNone(recommendedValue)) { + /** update config **/ + updateCallback(config, recommendedValue, parentProperties, configGroup); - delete recommendations.properties[name]; - } - } + delete recommendations.properties[name]; + } + } - if (recommendations.property_attributes) { - var propertyAttributes = recommendations.property_attributes[name]; + if (recommendations.property_attributes) { + var propertyAttributes = recommendations.property_attributes[name]; if (propertyAttributes) { var stackProperty = App.configsCollection.getConfigByName(name, fileName); for (var attr in propertyAttributes) { @@ -87,94 +87,98 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { } } } - } - } - }, this); - - if (propertiesToDelete.length) { - propertiesToDelete.forEach(function (property) { - /** remove config **/ - removeCallback(property, configs, parentProperties, configGroup); - - }, this); - } - }, - - /** - * Method that goes through all configs - * and apply recommendations to configs when it's needed - * - * @param {Object} recommendationObject - * @param {Object[]} configs - * @param {Object[]} parentProperties - */ - updateConfigsByRecommendations: function (recommendationObject, configs, parentProperties) { - this.parseRecommendations(recommendationObject, configs, parentProperties, null, - this._updateConfigByRecommendation.bind(this), this._removeConfigByRecommendation.bind(this), this._updateBoundaries.bind(this)); - }, - - /** - * This method goes through all config recommendations - * and trying to add new properties - * - * @param {Object} recommendationObject - * @param {Object[]} parentProperties - */ - addByRecommendations: function (recommendationObject, parentProperties) { + } + } + }, this); + + if (propertiesToDelete.length) { + propertiesToDelete.forEach(function (property) { + /** remove config **/ + removeCallback(property, configs, parentProperties, configGroup); + + }, this); + } + }, + + /** + * Method that goes through all configs + * and apply recommendations to configs when it's needed + * + * @param {Object} recommendationObject + * @param {Object[]} configs + * @param {Object[]} parentProperties + */ + updateConfigsByRecommendations: function (recommendationObject, configs, parentProperties) { + this.parseRecommendations(recommendationObject, configs, parentProperties, null, + this._updateConfigByRecommendation.bind(this), this._removeConfigByRecommendation.bind(this), this._updateBoundaries.bind(this)); + }, + + /** + * This method goes through all config recommendations + * and trying to add new properties + * + * @param {Object} recommendationObject + * @param {Object[]} parentProperties + */ + addByRecommendations: function (recommendationObject, parentProperties) { App.assertObject(recommendationObject); - for (var site in recommendationObject) { - var properties = recommendationObject[site].properties; - if (properties && Object.keys(properties).length) { - var stepConfig = App.config.getStepConfigForProperty(this.get('stepConfigs'), site), configs = []; - if (stepConfig) { - for (var propertyName in properties) { - if (this.allowUpdateProperty(parentProperties, propertyName, site)) { + for (var site in recommendationObject) { + var properties = recommendationObject[site].properties; + if (properties && Object.keys(properties).length) { + var stepConfig = App.config.getStepConfigForProperty(this.get('stepConfigs'), site), configs = []; + if (stepConfig) { + for (var propertyName in properties) { + if (this.allowUpdateProperty(parentProperties, propertyName, site)) { configs.pushObject(this._createNewProperty(propertyName, site, stepConfig.get('serviceName'), properties[propertyName], parentProperties)); - } - } + } + } if (configs.length) { var mergedConfigs = configs.concat(stepConfig.get('configs')); stepConfig.set('configs', mergedConfigs); } - } - } - } - }, - - /** - * Update config based on recommendations - * - * @param {recommendation} config - * @param {String} recommendedValue - * @param {String[]} [parentProperties] + } + } + } + }, + + /** + * Update config based on recommendations + * + * @param {recommendation} config + * @param {String} recommendedValue + * @param {String[]} [parentProperties] * @returns {recommendation} - * @protected - */ - _updateConfigByRecommendation: function (config, recommendedValue, parentProperties) { + * @protected + */ + _updateConfigByRecommendation: function (config, recommendedValue, parentProperties) { App.assertObject(config); - Em.set(config, 'recommendedValue', recommendedValue); - if (this.allowUpdateProperty(parentProperties, Em.get(config, 'name'), Em.get(config, 'filename'))) { - Em.set(config, 'value', recommendedValue); - this.applyRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), Em.get(config, 'group.name'), recommendedValue, this._getInitialValue(config), parentProperties); - } - if (this.updateInitialOnRecommendations(Em.get(config, 'serviceName'))) { - Em.set(config, 'initialValue', recommendedValue); - } + Em.set(config, 'recommendedValue', recommendedValue); + if (this.allowUpdateProperty(parentProperties, Em.get(config, 'name'), Em.get(config, 'filename'))) { + Em.setProperties(config, { + value: recommendedValue, + errorMessage: '', + warnMessage: '' + }); + this.applyRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), Em.get(config, 'group.name'), recommendedValue, this._getInitialValue(config), parentProperties); + } + if (this.updateInitialOnRecommendations(Em.get(config, 'serviceName'))) { + Em.set(config, 'initialValue', recommendedValue); + } return config; - }, + }, - /** - * Add config based on recommendations - * - * @param name - * @param fileName + /** + * Add config based on recommendations + * + * @param name + * @param fileName * @param serviceName - * @param recommendedValue - * @param parentProperties - * @protected - */ + * @param recommendedValue + * @param parentProperties + * @protected + */ _createNewProperty: function (name, fileName, serviceName, recommendedValue, parentProperties) { App.assertExists(name, 'name'); App.assertExists(fileName, 'fileName'); @@ -209,15 +213,15 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { }, - /** - * Remove config based on recommendations - * - * @param config - * @param configsCollection - * @param parentProperties - * @protected - */ - _removeConfigByRecommendation: function (config, configsCollection, parentProperties) { + /** + * Remove config based on recommendations + * + * @param config + * @param configsCollection + * @param parentProperties + * @protected + */ + _removeConfigByRecommendation: function (config, configsCollection, parentProperties) { App.assertObject(config); App.assertArray(configsCollection); @@ -225,11 +229,11 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { this.addModifiedFileName(Em.get(config, 'filename')); } - configsCollection.removeObject(config); + configsCollection.removeObject(config); - this.applyRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), Em.get(config, 'group.name'), - null, this._getInitialValue(config), parentProperties); - }, + this.applyRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), Em.get(config, 'group.name'), + null, this._getInitialValue(config), parentProperties); + }, /** * Defines if property was defined on initial load or was saved. @@ -243,31 +247,31 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { return !Em.isNone(Em.get(config, 'savedValue')) && !Em.isNone(Em.get(config, 'initialValue')); }, - /** - * Update config valueAttributes by recommendations - * - * @param {Object} stackProperty - * @param {string} attr - * @param {Number|String|Boolean} value - * @param {String} name - * @param {String} fileName - * @protected - */ - _updateBoundaries: function(stackProperty, attr, value, name, fileName) { - if (attr === 'visible') { - var p = App.config.findConfigProperty(this.get('stepConfigs'), name, App.config.getOriginalFileName(fileName)); - if (p) { - p.set('isVisible', value); - } - } - if (stackProperty) { - if (!Em.get(stackProperty, 'valueAttributes')) { - stackProperty.valueAttributes = {}; - } - Em.set(stackProperty.valueAttributes, attr, value); - } + /** + * Update config valueAttributes by recommendations + * + * @param {Object} stackProperty + * @param {string} attr + * @param {Number|String|Boolean} value + * @param {String} name + * @param {String} fileName + * @protected + */ + _updateBoundaries: function(stackProperty, attr, value, name, fileName) { + if (attr === 'visible') { + var p = App.config.findConfigProperty(this.get('stepConfigs'), name, App.config.getOriginalFileName(fileName)); + if (p) { + p.set('isVisible', value); + } + } + if (stackProperty) { + if (!Em.get(stackProperty, 'valueAttributes')) { + stackProperty.valueAttributes = {}; + } + Em.set(stackProperty.valueAttributes, attr, value); + } return stackProperty || null; - }, + }, /** * Get initial config value that was before recommendations was applied @@ -285,56 +289,56 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, { } }, - /** - * Get default config value - * <code>savedValue<code> for installed services - * <code>initialValue<code> for new services - * - * @param configProperty - * @returns {*} - * @protected - */ - _getInitialValue: function (configProperty) { - if (!configProperty) return null; - return this.useInitialValue(Em.get(configProperty, 'serviceName')) ? - Em.get(configProperty, 'initialValue') : Em.get(configProperty, 'savedValue'); - }, - - /** - * Update initial only when <code>initialValue<code> is used - * - * @param {string} serviceName - * @returns {boolean} - */ - updateInitialOnRecommendations: function(serviceName) { - return this.useInitialValue(serviceName); - }, - - /** - * Defines if initialValue of config can be used on current controller - * if not savedValue is used instead - * - * @param {String} serviceName - * @return {boolean} - */ - useInitialValue: function (serviceName) { - return false; - }, - - /** - * Defines if recommendation allowed to be applied - * - * @param parentProperties - * @param name - * @param fileName - * @param [configGroup] - * @returns {boolean} - */ - allowUpdateProperty: function (parentProperties, name, fileName, configGroup) { - try { - return Em.get(this.getRecommendation(name, fileName, configGroup), 'saveRecommended'); - } catch (e) { - return true; - } - } + /** + * Get default config value + * <code>savedValue<code> for installed services + * <code>initialValue<code> for new services + * + * @param configProperty + * @returns {*} + * @protected + */ + _getInitialValue: function (configProperty) { + if (!configProperty) return null; + return this.useInitialValue(Em.get(configProperty, 'serviceName')) ? + Em.get(configProperty, 'initialValue') : Em.get(configProperty, 'savedValue'); + }, + + /** + * Update initial only when <code>initialValue<code> is used + * + * @param {string} serviceName + * @returns {boolean} + */ + updateInitialOnRecommendations: function(serviceName) { + return this.useInitialValue(serviceName); + }, + + /** + * Defines if initialValue of config can be used on current controller + * if not savedValue is used instead + * + * @param {String} serviceName + * @return {boolean} + */ + useInitialValue: function (serviceName) { + return false; + }, + + /** + * Defines if recommendation allowed to be applied + * + * @param parentProperties + * @param name + * @param fileName + * @param [configGroup] + * @returns {boolean} + */ + allowUpdateProperty: function (parentProperties, name, fileName, configGroup) { + try { + return Em.get(this.getRecommendation(name, fileName, configGroup), 'saveRecommended'); + } catch (e) { + return true; + } + } }); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/bba27c81/ambari-web/app/mixins/common/configs/config_with_override_recommendation_parser.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/config_with_override_recommendation_parser.js b/ambari-web/app/mixins/common/configs/config_with_override_recommendation_parser.js index 0898ed9..c39b9dd 100644 --- a/ambari-web/app/mixins/common/configs/config_with_override_recommendation_parser.js +++ b/ambari-web/app/mixins/common/configs/config_with_override_recommendation_parser.js @@ -20,94 +20,96 @@ var App = require('app'); App.ConfigWithOverrideRecommendationParser = Em.Mixin.create(App.ConfigRecommendationParser, { - /** - * Method that goes through all configs - * and apply recommendations to overrides when it's needed - * - * @param {Object} recommendationObject - * @param {Object[]} configs - * @param {Object[]} parentProperties - * @param {App.ServiceConfigGroup} configGroup - */ - updateOverridesByRecommendations: function (recommendationObject, configs, parentProperties, configGroup) { - Em.assert('Config groups should be defined and not default', configGroup && configGroup.get('name') && !configGroup.get('isDefault')); - this.parseRecommendations(recommendationObject, configs, parentProperties, configGroup, - this._updateOverride.bind(this), this._removeOverride.bind(this), this._updateOverrideBoundaries.bind(this)); - }, + /** + * Method that goes through all configs + * and apply recommendations to overrides when it's needed + * + * @param {Object} recommendationObject + * @param {Object[]} configs + * @param {Object[]} parentProperties + * @param {App.ServiceConfigGroup} configGroup + */ + updateOverridesByRecommendations: function (recommendationObject, configs, parentProperties, configGroup) { + Em.assert('Config groups should be defined and not default', configGroup && configGroup.get('name') && !configGroup.get('isDefault')); + this.parseRecommendations(recommendationObject, configs, parentProperties, configGroup, + this._updateOverride.bind(this), this._removeOverride.bind(this), this._updateOverrideBoundaries.bind(this)); + }, - /** - * Update override by recommendations - * includes add/update actions - * - * @param config - * @param recommendedValue - * @param parentProperties - * @param configGroup - * @protected - */ - _updateOverride: function(config, recommendedValue, parentProperties, configGroup) { - var updateValue = this.allowUpdateProperty(parentProperties, Em.get(config, 'name'), Em.get(config, 'filename'), configGroup.get('name')); - var override = config.getOverride(configGroup.get('name')); - if (override) { - this._updateConfigByRecommendation(override, recommendedValue, parentProperties); - } else if (updateValue) { - this._addConfigOverrideRecommendation(config, recommendedValue, parentProperties, configGroup); - } - }, + /** + * Update override by recommendations + * includes add/update actions + * + * @param config + * @param recommendedValue + * @param parentProperties + * @param configGroup + * @protected + */ + _updateOverride: function(config, recommendedValue, parentProperties, configGroup) { + var updateValue = this.allowUpdateProperty(parentProperties, Em.get(config, 'name'), Em.get(config, 'filename'), configGroup.get('name')); + var override = config.getOverride(configGroup.get('name')); + if (override) { + this._updateConfigByRecommendation(override, recommendedValue, parentProperties); + } else if (updateValue) { + this._addConfigOverrideRecommendation(config, recommendedValue, parentProperties, configGroup); + } + }, - /** - * Remove override by recommendations - * - * @param property - * @param configs - * @param parentProperties - * @param configGroup - * @protected - */ - _removeOverride: function(property, configs, parentProperties, configGroup) { - this._removeConfigByRecommendation(property.getOverride(configGroup.get('name')), property.get('overrides') || [], parentProperties); - }, + /** + * Remove override by recommendations + * + * @param property + * @param configs + * @param parentProperties + * @param configGroup + * @protected + */ + _removeOverride: function(property, configs, parentProperties, configGroup) { + this._removeConfigByRecommendation(property.getOverride(configGroup.get('name')), property.get('overrides') || [], parentProperties); + }, - /** - * Add override by recommendations - * - * @param config - * @param recommendedValue - * @param configGroup - * @param parentProperties - * @protected - */ - _addConfigOverrideRecommendation: function (config, recommendedValue, parentProperties, configGroup) { - var popupProperty = this.getRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), configGroup.get('name')), - initialValue = popupProperty ? popupProperty.value : null; - var coreObject = { - "value": recommendedValue, - "recommendedValue": recommendedValue, - "initialValue": initialValue, - "savedValue": !this.useInitialValue(Em.get(config, 'serviceName')) && !Em.isNone(initialValue) ? initialValue : null, - "isEditable": true - }; - var override = App.config.createOverride(config, coreObject, configGroup); + /** + * Add override by recommendations + * + * @param config + * @param recommendedValue + * @param configGroup + * @param parentProperties + * @protected + */ + _addConfigOverrideRecommendation: function (config, recommendedValue, parentProperties, configGroup) { + var popupProperty = this.getRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), configGroup.get('name')), + initialValue = popupProperty ? popupProperty.value : null; + var coreObject = { + "value": recommendedValue, + "recommendedValue": recommendedValue, + "initialValue": initialValue, + "savedValue": !this.useInitialValue(Em.get(config, 'serviceName')) && !Em.isNone(initialValue) ? initialValue : null, + "isEditable": true, + "errorMessage": '', + "warnMessage": '' + }; + var override = App.config.createOverride(config, coreObject, configGroup); - this.applyRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), configGroup.get('name'), - recommendedValue, this._getInitialValue(override), parentProperties); - }, + this.applyRecommendation(Em.get(config, 'name'), Em.get(config, 'filename'), configGroup.get('name'), + recommendedValue, this._getInitialValue(override), parentProperties); + }, - /** - * Update override valueAttributes by recommendations - * - * @param {Object} stackProperty - * @param {string} attr - * @param {Number|String|Boolean} value - * @param {String} name - * @param {String} fileName - * @param {App.ServiceConfigGroup} configGroup - * @protected - */ - _updateOverrideBoundaries: function(stackProperty, attr, value, name, fileName, configGroup) { - if (!stackProperty.valueAttributes[configGroup.get('name')]) { - stackProperty.valueAttributes[configGroup.get('name')] = {}; - } - Em.set(stackProperty.valueAttributes[configGroup.get('name')], attr, value); - } + /** + * Update override valueAttributes by recommendations + * + * @param {Object} stackProperty + * @param {string} attr + * @param {Number|String|Boolean} value + * @param {String} name + * @param {String} fileName + * @param {App.ServiceConfigGroup} configGroup + * @protected + */ + _updateOverrideBoundaries: function(stackProperty, attr, value, name, fileName, configGroup) { + if (!stackProperty.valueAttributes[configGroup.get('name')]) { + stackProperty.valueAttributes[configGroup.get('name')] = {}; + } + Em.set(stackProperty.valueAttributes[configGroup.get('name')], attr, value); + } }); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/bba27c81/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index 4fa8aa8..6c6e7f6 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -323,7 +323,9 @@ App.config = Em.Object.create({ dependentConfigPattern: null, options: null, radioName: null, - widgetType: null + widgetType: null, + errorMessage: '', + warnMessage: '' }; return Object.keys(coreObject|| {}).length ? $.extend(tpl, coreObject) : tpl; http://git-wip-us.apache.org/repos/asf/ambari/blob/bba27c81/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js b/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js index 1b84509..c5ccdb9 100644 --- a/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js +++ b/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js @@ -194,7 +194,9 @@ describe('App.ConfigRecommendationParser', function() { 'result': { 'recommendedValue': 'recommendedValue', 'value': 'recommendedValue', - 'initialValue': 'recommendedValue' + 'initialValue': 'recommendedValue', + 'errorMessage': '', + 'warnMessage': '' } }, { @@ -204,7 +206,9 @@ describe('App.ConfigRecommendationParser', function() { 'result': { 'recommendedValue': 'recommendedValue', 'value': 'recommendedValue', - 'initialValue': null + 'initialValue': null, + 'errorMessage': '', + 'warnMessage': '' } }, { http://git-wip-us.apache.org/repos/asf/ambari/blob/bba27c81/ambari-web/test/utils/config_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/utils/config_test.js b/ambari-web/test/utils/config_test.js index d0f9c37..7b7dfa9 100644 --- a/ambari-web/test/utils/config_test.js +++ b/ambari-web/test/utils/config_test.js @@ -708,7 +708,9 @@ describe('App.config', function () { dependentConfigPattern: null, options: null, radioName: null, - widgetType: null + widgetType: null, + errorMessage: '', + warnMessage: '' }; it('create default config object', function () { expect(App.config.createDefaultConfig('pName', 'pFileName', true)).to.eql(res);
