From bb34528a863f891f64ac06a2a0092530ebf0786b Mon Sep 17 00:00:00 2001 From: David Hudson Date: Mon, 12 Sep 2016 17:00:28 +0900 Subject: [PATCH] [Testing] Add tests to ensure correct image type Issue #967 --- .../test/services/ExportImageServiceSpec.js | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/platform/features/plot/test/services/ExportImageServiceSpec.js b/platform/features/plot/test/services/ExportImageServiceSpec.js index e25572e3a1..111a8d3432 100644 --- a/platform/features/plot/test/services/ExportImageServiceSpec.js +++ b/platform/features/plot/test/services/ExportImageServiceSpec.js @@ -32,10 +32,13 @@ define( mockTimeout, mockLog, mockHtml2Canvas, + mockCanvas, mockJsPDF, mockJsPDFSave, mockSaveAs, + mockFileReader, mockExportTimeoutConstant, + testElement, exportImageService; describe("ExportImageService", function () { @@ -69,7 +72,13 @@ define( "$log", ["warn"] ); - mockHtml2Canvas = jasmine.createSpy("html2canvas"); + mockHtml2Canvas = jasmine.createSpy("html2canvas").andCallFake(function (element, opts) { + opts.onrendered(mockCanvas); + }); + mockCanvas = jasmine.createSpyObj( + "canvas", + ["toBlob"] + ); mockJsPDFSave = jasmine.createSpy("jsPDFSave"); mockJsPDF = function () { return { @@ -78,7 +87,12 @@ define( }; }; mockSaveAs = jasmine.createSpy("saveAs"); + mockFileReader = jasmine.createSpyObj( + "FileReader", + ["readAsDataURL", "onloadend"] + ); mockExportTimeoutConstant = 0; + testElement = {}; exportImageService = new ExportImageService( mockQ, @@ -87,32 +101,37 @@ define( mockExportTimeoutConstant, mockHtml2Canvas, mockJsPDF, - mockSaveAs + mockSaveAs, + mockFileReader ); }); it("runs html2canvas and tries to save a pdf", function () { - exportImageService.exportPDF("", "plot.pdf"); + exportImageService.exportPDF(testElement, "plot.pdf"); + mockFileReader.onloadend(); - expect(mockHtml2Canvas).toHaveBeenCalled(); + expect(mockHtml2Canvas).toHaveBeenCalledWith(testElement, { onrendered: jasmine.any(Function) }); + expect(mockCanvas.toBlob).toHaveBeenCalledWith(mockDeferred.resolve, "image/jpeg"); expect(mockDeferred.reject).not.toHaveBeenCalled(); expect(mockJsPDFSave).toHaveBeenCalled(); expect(mockPromise.finally).toHaveBeenCalled(); }); it("runs html2canvas and tries to save a png", function () { - exportImageService.exportPNG("", "plot.png"); + exportImageService.exportPNG(testElement, "plot.png"); - expect(mockHtml2Canvas).toHaveBeenCalled(); + expect(mockHtml2Canvas).toHaveBeenCalledWith(testElement, { onrendered: jasmine.any(Function) }); + expect(mockCanvas.toBlob).toHaveBeenCalledWith(mockDeferred.resolve, "image/png"); expect(mockDeferred.reject).not.toHaveBeenCalled(); expect(mockSaveAs).toHaveBeenCalled(); expect(mockPromise.finally).toHaveBeenCalled(); }); it("runs html2canvas and tries to save a jpg", function () { - exportImageService.exportJPG("", "plot.png"); + exportImageService.exportJPG(testElement, "plot.png"); - expect(mockHtml2Canvas).toHaveBeenCalled(); + expect(mockHtml2Canvas).toHaveBeenCalledWith(testElement, { onrendered: jasmine.any(Function) }); + expect(mockCanvas.toBlob).toHaveBeenCalledWith(mockDeferred.resolve, "image/jpeg"); expect(mockDeferred.reject).not.toHaveBeenCalled(); expect(mockSaveAs).toHaveBeenCalled(); expect(mockPromise.finally).toHaveBeenCalled();