Ver código fonte

AMBARI-8601. Alerts UI: Removing alert-definition does not update count on Alert-Groups filter. (onechiporenko)

Oleg Nechiporenko 10 anos atrás
pai
commit
4fbfe4c5b3

+ 1 - 0
ambari-web/app/assets/test/tests.js

@@ -227,6 +227,7 @@ var files = ['test/init_model_test',
   'test/models/alert_test',
   'test/models/alert_config_test',
   'test/models/alert_definition_test',
+  'test/models/alert_group_test',
   'test/models/alert_instance_test',
   'test/models/authentication_test',
   'test/models/cluster_states_test',

+ 3 - 1
ambari-web/app/controllers/main/alerts/alert_definitions_actions_controller.js

@@ -138,7 +138,9 @@ App.MainAlertDefinitionActionsController = Em.ArrayController.extend({
             else {
               self.hide();
               App.router.get('updateController').updateAlertGroups(function () {
-                App.router.get('updateController').updateAlertNotifications(Em.K);
+                App.router.get('updateController').updateAlertDefinitions(function() {
+                  App.router.get('updateController').updateAlertNotifications(Em.K);
+                });
               });
             }
           } else {

+ 1 - 1
ambari-web/app/models/alert_group.js

@@ -52,7 +52,7 @@ App.AlertGroup = DS.Model.extend({
       this.get('aggregateAlertDefinitions').toArray(),
       this.get('scriptAlertDefinitions').toArray()
     );
-  }.property('portAlertDefinitions', 'metricsAlertDefinitions', 'webAlertDefinitions', 'aggregateAlertDefinitions', 'scriptAlertDefinitions'),
+  }.property('portAlertDefinitions.length', 'metricsAlertDefinitions.length', 'webAlertDefinitions.length', 'aggregateAlertDefinitions.length', 'scriptAlertDefinitions.length'),
 
   /**
    * @type {App.PortAlertDefinition[]}

+ 57 - 0
ambari-web/test/models/alert_group_test.js

@@ -0,0 +1,57 @@
+/**
+ * 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');
+
+require('models/alert_group');
+
+var model;
+
+describe('App.AlertGroup', function () {
+
+  beforeEach(function () {
+
+    model = App.AlertGroup.createRecord();
+
+  });
+
+  describe('#definitions', function () {
+
+    beforeEach(function () {
+
+      model.reopen({
+        portAlertDefinitions: [1],
+        metricsAlertDefinitions: [2, 3],
+        webAlertDefinitions: [4],
+        aggregateAlertDefinitions: [],
+        scriptAlertDefinitions: [6]
+      });
+
+    });
+
+    it('should concatenate all types of definitions', function () {
+      expect(model.get('definitions')).to.eql([1,2,3,4,6]);
+      model.set('aggregateAlertDefinitions', [5]);
+      expect(model.get('definitions')).to.eql([1,2,3,4,5,6]);
+      model.set('scriptAlertDefinitions', []);
+      expect(model.get('definitions')).to.eql([1,2,3,4,5]);
+    });
+
+  });
+
+});