Code coverage report for app/mixins/common/configs/config_with_override_recommendation_parser.js

Statements: 100% (22 / 22)      Branches: 94.74% (18 / 19)      Functions: 100% (6 / 6)      Lines: 100% (22 / 22)      Ignored: none     

All files » app/mixins/common/configs/ » config_with_override_recommendation_parser.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124    1                                     1   1                       1 1                           3         3 3 3 1 2 1                           2 2 2                         3   3                 3   3                             2 1   2      
'use strict';
 
;require.register("mixins/common/configs/config_with_override_recommendation_parser", function (exports, require, module) {
  /**
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
 
  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 updateOverridesByRecommendations(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 _updateOverride(config, recommendedValue, parentProperties, configGroup) {
      var name = Em.get(config, 'name'),
          fileName = Em.get(config, 'filename'),
          group = Em.get(config, 'group.name'),
          value = Em.get(config, 'value');
 
      var updateValue = this.allowUpdateProperty(parentProperties, name, fileName, group, value);
      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 _removeOverride(property, configs, parentProperties, configGroup) {
      var config = property.getOverride(configGroup.get('name'));
      config = config ? config : property;
      this._removeConfigByRecommendation(config, property.get('overrides') || [], parentProperties);
    },
 
    /**
     * Add override by recommendations
     *
     * @param config
     * @param recommendedValue
     * @param configGroup
     * @param parentProperties
     * @protected
     */
    _addConfigOverrideRecommendation: function _addConfigOverrideRecommendation(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, Em.get(config, 'isEditable'));
    },
 
    /**
     * 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 _updateOverrideBoundaries(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);
    }
  });
});