Просмотр исходного кода

Merge pull request #9697 from bergquist/fix_removed_threshols

save as should only delete threshold for panels with alerts
Carl Bergquist 8 лет назад
Родитель
Сommit
e5ec357625

+ 4 - 1
public/app/features/dashboard/save_as_modal.ts

@@ -49,7 +49,10 @@ export class SaveDashboardAsModalCtrl {
     if (dashboard.id > 0) {
       this.clone.rows.forEach(row => {
         row.panels.forEach(panel => {
-          delete panel.thresholds;
+          if (panel.type === "graph" && panel.alert) {
+            delete panel.thresholds;
+          }
+
           delete panel.alert;
         });
       });

+ 67 - 0
public/app/features/dashboard/specs/save_as_modal.jest.ts

@@ -0,0 +1,67 @@
+import {SaveDashboardAsModalCtrl} from '../save_as_modal';
+import {describe, expect} from 'test/lib/common';
+
+describe('saving dashboard as', () => {
+    function scenario(name, panel, verify) {
+        describe(name, () => {
+            var json = {
+                title: "name",
+                rows: [ { panels: [
+                    panel
+                ]}]
+            };
+
+            var mockDashboardSrv = {
+                getCurrent: function() {
+                    return {
+                        id: 5,
+                        getSaveModelClone: function() {
+                            return json;
+                        }
+                    };
+                }
+            };
+
+            var ctrl = new SaveDashboardAsModalCtrl(mockDashboardSrv);
+            var ctx: any = {
+                clone: ctrl.clone,
+                ctrl: ctrl,
+                panel: {}
+            };
+            for (let row of ctrl.clone.rows) {
+                for (let panel of row.panels) {
+                    ctx.panel = panel;
+                }
+            }
+            it("verify", () => {
+                verify(ctx);
+            });
+        });
+    }
+
+    scenario("default values", {}, (ctx) => {
+        var clone = ctx.clone;
+        expect(clone.id).toBe(null);
+        expect(clone.title).toBe("name Copy");
+        expect(clone.editable).toBe(true);
+        expect(clone.hideControls).toBe(false);
+    });
+
+    var graphPanel = { id: 1, type: "graph", alert: { rule: 1}, thresholds: { value: 3000} };
+
+    scenario("should remove alert from graph panel", graphPanel , (ctx) => {
+        expect(ctx.panel.alert).toBe(undefined);
+    });
+
+    scenario("should remove threshold from graph panel", graphPanel, (ctx) => {
+        expect(ctx.panel.thresholds).toBe(undefined);
+    });
+
+    scenario("singlestat should keep threshold", { id: 1, type: "singlestat", thresholds: { value: 3000} }, (ctx) => {
+        expect(ctx.panel.thresholds).not.toBe(undefined);
+    });
+
+    scenario("table should keep threshold", { id: 1, type: "table", thresholds: { value: 3000} }, (ctx) => {
+        expect(ctx.panel.thresholds).not.toBe(undefined);
+    });
+});