diff --git a/platform/features/table/src/controllers/MCTTableController.js b/platform/features/table/src/controllers/MCTTableController.js index 977584a6e2..0acb173274 100644 --- a/platform/features/table/src/controllers/MCTTableController.js +++ b/platform/features/table/src/controllers/MCTTableController.js @@ -47,7 +47,7 @@ define( setDefaults($scope); $scope.exportAsCSV = function () { - var headers = $scope.headers; + var headers = $scope.displayHeaders; exportService.exportCSV($scope.displayRows.map(function (row) { return headers.reduce(function (r, header) { r[header] = row[header].text; diff --git a/platform/features/table/test/controllers/MCTTableControllerSpec.js b/platform/features/table/test/controllers/MCTTableControllerSpec.js index 26578ba244..7eefcb56f7 100644 --- a/platform/features/table/test/controllers/MCTTableControllerSpec.js +++ b/platform/features/table/test/controllers/MCTTableControllerSpec.js @@ -32,7 +32,8 @@ define( mockScope, watches, mockTimeout, - mockElement; + mockElement, + mockExportService; function promise(value) { return { @@ -67,11 +68,20 @@ define( offsetHeight: 1000 }; + mockExportService = jasmine.createSpyObj('exportService', [ + 'exportCSV' + ]); + mockScope.displayHeaders = true; mockTimeout = jasmine.createSpy('$timeout'); mockTimeout.andReturn(promise(undefined)); - controller = new MCTTableController(mockScope, mockTimeout, mockElement); + controller = new MCTTableController( + mockScope, + mockTimeout, + mockElement, + mockExportService + ); spyOn(controller, 'setVisibleRows').andCallThrough(); }); @@ -149,6 +159,22 @@ define( expect(controller.setVisibleRows).toHaveBeenCalled(); }); + it("can be exported as CSV", function () { + controller.setRows(testRows); + controller.setHeaders(Object.keys(testRows[0])); + mockScope.exportAsCSV(); + expect(mockExportService.exportCSV) + .toHaveBeenCalled(); + mockExportService.exportCSV.mostRecentCall.args[0] + .forEach(function (row, i) { + Object.keys(row).forEach(function (k) { + expect(row[k]).toEqual( + mockScope.displayRows[i][k].text + ); + }); + }); + }); + describe('sorting', function () { var sortedRows;