| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var path_1 = require("path");
- var loader = require("./loader-impl");
- var helpers = require("../util/helpers");
- function getMockContext() {
- return {
- fileCache: getMockFileCache()
- };
- }
- function getMockFileCache() {
- return {
- get: function () { },
- set: function () { }
- };
- }
- function getMockWebpackObject(resourcePath) {
- return {
- cacheable: function () { },
- async: function () { },
- resourcePath: resourcePath
- };
- }
- describe('webpack loader', function () {
- it('should callback with file and original source map provided', function (done) {
- // arrange
- var mockContext = getMockContext();
- var mockSourceMap = {};
- var sourceString = 'sourceString';
- var fakePath = path_1.join(process.cwd(), 'some', 'path', 'content.js');
- var fakeContent = 'SomeFileContent';
- var mockWebpackObject = getMockWebpackObject(fakePath);
- var spy = jasmine.createSpy('mock webpack callback');
- spy.and.callFake(function () {
- assertFunction();
- });
- spyOn(mockWebpackObject, mockWebpackObject.cacheable.name);
- spyOn(mockWebpackObject, mockWebpackObject.async.name).and.returnValue(spy);
- spyOn(helpers, helpers.getContext.name).and.returnValue(mockContext);
- spyOn(helpers, helpers.readAndCacheFile.name).and.returnValue(Promise.resolve(fakeContent));
- spyOn(mockContext.fileCache, mockContext.fileCache.get.name).and.returnValue({
- path: fakePath,
- content: fakeContent
- });
- // act
- loader.webpackLoader(sourceString, mockSourceMap, mockWebpackObject);
- // assert
- var assertFunction = function () {
- expect(helpers.readAndCacheFile).toHaveBeenCalledTimes(2);
- expect(spy).toHaveBeenCalledWith(null, fakeContent, mockSourceMap);
- done();
- };
- });
- it('should callback with file and map loaded from file cache', function (done) {
- // arrange
- var mockContext = getMockContext();
- var mockSourceMap = {};
- var sourceString = 'sourceString';
- var fakePath = path_1.join(process.cwd(), 'some', 'path', 'content.js');
- var fakeContent = "{\"test\": \"test\"}";
- var mockWebpackObject = getMockWebpackObject(fakePath);
- var spy = jasmine.createSpy('mock webpack callback');
- spy.and.callFake(function () {
- assertFunction();
- });
- spyOn(mockWebpackObject, mockWebpackObject.cacheable.name);
- spyOn(mockWebpackObject, mockWebpackObject.async.name).and.returnValue(spy);
- spyOn(helpers, helpers.getContext.name).and.returnValue(mockContext);
- spyOn(helpers, helpers.readAndCacheFile.name).and.returnValue(Promise.resolve(fakeContent));
- var fileCacheSpy = spyOn(mockContext.fileCache, mockContext.fileCache.get.name).and.returnValue({
- path: fakePath,
- content: fakeContent
- });
- // act
- loader.webpackLoader(sourceString, mockSourceMap, mockWebpackObject);
- // assert
- var assertFunction = function () {
- expect(fileCacheSpy).toHaveBeenCalledTimes(2);
- expect(fileCacheSpy.calls.first().args[0]).toEqual(fakePath);
- expect(fileCacheSpy.calls.mostRecent().args[0]).toEqual(fakePath + '.map');
- expect(spy.calls.mostRecent().args[0]).toEqual(null);
- expect(spy.calls.mostRecent().args[1]).toEqual(fakeContent);
- expect(spy.calls.mostRecent().args[2]).not.toEqual(mockSourceMap);
- done();
- };
- });
- it('should callback with error when can\'t load file from disk', function (done) {
- // arrange
- var cantReadFileError = 'Failed to read file from disk';
- var mockContext = getMockContext();
- var mockSourceMap = {};
- var sourceString = 'sourceString';
- var fakePath = path_1.join(process.cwd(), 'some', 'path', 'content.js');
- var mockWebpackObject = getMockWebpackObject(fakePath);
- var spy = jasmine.createSpy('mock webpack callback');
- spy.and.callFake(function () {
- assertFunction();
- });
- spyOn(mockWebpackObject, mockWebpackObject.cacheable.name);
- spyOn(mockWebpackObject, mockWebpackObject.async.name).and.returnValue(spy);
- spyOn(helpers, helpers.getContext.name).and.returnValue(mockContext);
- spyOn(mockContext.fileCache, mockContext.fileCache.get.name).and.returnValue(null);
- spyOn(mockContext.fileCache, mockContext.fileCache.set.name);
- spyOn(helpers, helpers.readAndCacheFile.name).and.returnValue(Promise.reject(new Error(cantReadFileError)));
- // assert
- var assertFunction = function () {
- expect(spy.calls.mostRecent().args[0]).toBeTruthy();
- expect(spy.calls.mostRecent().args[0].message).toEqual(cantReadFileError);
- done();
- };
- // act
- return loader.webpackLoader(sourceString, mockSourceMap, mockWebpackObject);
- });
- it('should callback with content from disk', function (done) {
- // arrange
- var mockContext = getMockContext();
- var mockSourceMap = {};
- var sourceString = 'sourceString';
- var fakePath = path_1.join(process.cwd(), 'some', 'path', 'content.js');
- var fakeContent = "{\"test\": \"test\"}";
- var mockWebpackObject = getMockWebpackObject(fakePath);
- var callbackSpy = jasmine.createSpy('mock webpack callback');
- callbackSpy.and.callFake(function () {
- assertFunction();
- });
- spyOn(mockWebpackObject, mockWebpackObject.cacheable.name);
- spyOn(mockWebpackObject, mockWebpackObject.async.name).and.returnValue(callbackSpy);
- spyOn(helpers, helpers.getContext.name).and.returnValue(mockContext);
- spyOn(mockContext.fileCache, mockContext.fileCache.set.name);
- var readFileSpy = spyOn(helpers, helpers.readAndCacheFile.name).and.returnValue(Promise.resolve(fakeContent));
- spyOn(mockContext.fileCache, mockContext.fileCache.get.name).and.returnValue({
- path: fakePath,
- content: fakeContent
- });
- // act
- loader.webpackLoader(sourceString, mockSourceMap, mockWebpackObject);
- // assert
- var assertFunction = function () {
- expect(readFileSpy).toHaveBeenCalledTimes(2);
- expect(readFileSpy.calls.first().args[0]).toEqual(fakePath);
- expect(readFileSpy.calls.mostRecent().args[0]).toEqual(fakePath + '.map');
- expect(callbackSpy.calls.mostRecent().args[0]).toEqual(null);
- expect(callbackSpy.calls.mostRecent().args[1]).toEqual(fakeContent);
- expect(callbackSpy.calls.mostRecent().args[2]).toBeTruthy();
- done();
- };
- });
- });
|