Sfoglia il codice sorgente

AMBARI-11755. Configs: changing to recommended doesn't tell of depedent config changes (onechiporenko)

Oleg Nechiporenko 10 anni fa
parent
commit
0900378006

+ 3 - 1
ambari-web/app/views/common/configs/widgets/config_widget_view.js

@@ -266,7 +266,9 @@ App.ConfigWidgetView = Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
     var self = this;
     this.set('config.value', this.get('config.recommendedValue'));
     this.sendRequestRorDependentConfigs(this.get('config')).done(function() {
-      self.restoreDependentConfigs(self.get('config'));
+      if (self.get('config.value') === self.get('config.savedValue')) {
+        self.restoreDependentConfigs(self.get('config'));
+      }
     });
 
     if (this.get('config.supportsFinal')) {

+ 33 - 0
ambari-web/test/views/common/configs/widgets/config_widget_view_test.js

@@ -230,4 +230,37 @@ describe('App.ConfigWidgetView', function () {
       expect(view.isValueCompatibleWithWidget()).to.be.false;
     });
   });
+
+  describe('#setRecommendedValue', function () {
+
+    beforeEach(function () {
+      sinon.stub(view, 'sendRequestRorDependentConfigs', function () {
+        return $.Deferred().resolve().promise();
+      });
+      sinon.stub(view, 'restoreDependentConfigs', Em.K);
+      view.set('config', Em.Object.create({
+        value: 1,
+        recommendedValue: 1,
+        savedValue: 1
+      }));
+    });
+
+    afterEach(function () {
+      view.sendRequestRorDependentConfigs.restore();
+      view.restoreDependentConfigs.restore();
+    });
+
+    it('should call restoreDependentConfigs if config.value is equal to config.savedValue', function () {
+      view.setRecommendedValue();
+      expect(view.restoreDependentConfigs.calledOnce).to.be.true;
+    });
+
+    it('should not call restoreDependentConfigs if config.value is not equal to config.savedValue', function () {
+      view.set('config.savedValue', 2);
+      view.setRecommendedValue();
+      expect(view.restoreDependentConfigs.called).to.be.false;
+    });
+
+  });
+
 });