AMBARI-13448. CSV export: downloaded data does not reflect what's shown in the 
chart


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4a954283
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4a954283
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4a954283

Branch: refs/heads/branch-dev-patch-upgrade
Commit: 4a954283e96a1e598e436b9c264939398793c59d
Parents: a509510
Author: Alex Antonenko <hiv...@gmail.com>
Authored: Fri Oct 16 13:08:00 2015 +0300
Committer: Alex Antonenko <hiv...@gmail.com>
Committed: Fri Oct 16 13:38:21 2015 +0300

----------------------------------------------------------------------
 .../views/common/widget/graph_widget_view.js    |   2 +-
 .../common/widget/graph_widget_view_test.js     | 112 +++++++++++++++++++
 2 files changed, 113 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4a954283/ambari-web/app/views/common/widget/graph_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/widget/graph_widget_view.js 
b/ambari-web/app/views/common/widget/graph_widget_view.js
index fb8e754..1ed20d2 100644
--- a/ambari-web/app/views/common/widget/graph_widget_view.js
+++ b/ambari-web/app/views/common/widget/graph_widget_view.js
@@ -313,7 +313,7 @@ App.GraphWidgetView = Em.View.extend(App.WidgetMixin, 
App.ExportMetricsMixin, {
       isCSV = !!event.context,
       fileType = isCSV ? 'csv' : 'json',
       fileName = 'data.' + fileType,
-      metrics = this.get('content.metrics'),
+      metrics = this.get('data'),
       hasData = Em.isArray(metrics) && metrics.some(function (item) {
         return Em.isArray(item.data);
       });

http://git-wip-us.apache.org/repos/asf/ambari/blob/4a954283/ambari-web/test/views/common/widget/graph_widget_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/widget/graph_widget_view_test.js 
b/ambari-web/test/views/common/widget/graph_widget_view_test.js
index deccce5..7215128 100644
--- a/ambari-web/test/views/common/widget/graph_widget_view_test.js
+++ b/ambari-web/test/views/common/widget/graph_widget_view_test.js
@@ -18,6 +18,7 @@
 
 var App = require('app');
 require('views/common/widget/graph_widget_view');
+var fileUtils = require('utils/file_utils');
 
 describe('App.GraphWidgetView', function () {
   var view = App.GraphWidgetView.create();
@@ -126,4 +127,115 @@ describe('App.GraphWidgetView', function () {
     });
   });
 
+  describe('#exportGraphData', function () {
+
+    var cases = [
+      {
+        data: null,
+        prepareCSVCallCount: 0,
+        prepareJSONCallCount: 0,
+        downloadTextFileCallCount: 0,
+        showAlertPopupCallCount: 1,
+        title: 'no data'
+      },
+      {
+        data: {},
+        prepareCSVCallCount: 0,
+        prepareJSONCallCount: 0,
+        downloadTextFileCallCount: 0,
+        showAlertPopupCallCount: 1,
+        title: 'invalid data'
+      },
+      {
+        data: [
+          {
+            data: null
+          }
+        ],
+        prepareCSVCallCount: 0,
+        prepareJSONCallCount: 0,
+        downloadTextFileCallCount: 0,
+        showAlertPopupCallCount: 1,
+        title: 'empty data'
+      },
+      {
+        data: [
+          {
+            data: {}
+          }
+        ],
+        prepareCSVCallCount: 0,
+        prepareJSONCallCount: 0,
+        downloadTextFileCallCount: 0,
+        showAlertPopupCallCount: 1,
+        title: 'malformed data'
+      },
+      {
+        data: [
+          {
+            data: [
+              {
+                key: 'value'
+              }
+            ]
+          }
+        ],
+        prepareCSVCallCount: 0,
+        prepareJSONCallCount: 1,
+        downloadTextFileCallCount: 1,
+        showAlertPopupCallCount: 0,
+        title: 'JSON export'
+      },
+      {
+        data: [
+          {
+            data: [
+              {
+                key: 'value'
+              }
+            ]
+          }
+        ],
+        event: {
+          context: true
+        },
+        prepareCSVCallCount: 1,
+        prepareJSONCallCount: 0,
+        downloadTextFileCallCount: 1,
+        showAlertPopupCallCount: 0,
+        title: 'CSV export'
+      }
+    ];
+
+    beforeEach(function () {
+      sinon.stub(view, 'prepareCSV').returns([]);
+      sinon.stub(view, 'prepareJSON').returns([]);
+      sinon.stub(fileUtils, 'downloadTextFile', Em.K);
+      sinon.stub(App, 'showAlertPopup', Em.K);
+    });
+
+    afterEach(function () {
+      view.prepareCSV.restore();
+      view.prepareJSON.restore();
+      fileUtils.downloadTextFile.restore();
+      App.showAlertPopup.restore();
+    });
+
+    cases.forEach(function (item) {
+      it(item.title, function () {
+        view.set('data', item.data);
+        view.exportGraphData(item.event || {});
+        expect(view.prepareCSV.callCount).to.equal(item.prepareCSVCallCount);
+        expect(view.prepareJSON.callCount).to.equal(item.prepareJSONCallCount);
+        
expect(fileUtils.downloadTextFile.callCount).to.equal(item.downloadTextFileCallCount);
+        
expect(App.showAlertPopup.callCount).to.equal(item.showAlertPopupCallCount);
+        if (item.downloadTextFileCallCount) {
+          var fileType = item.event && item.event.context ? 'csv' : 'json';
+          expect(fileUtils.downloadTextFile.calledWith([], fileType, 'data.' + 
fileType)).to.be.true;
+        }
+      });
+    });
+
+  });
+
 });
\ No newline at end of file

Reply via email to