UNPKG

1.8 kBJavaScriptView Raw
1/**
2 * Create new FS mock, with given set of fake files and directories.
3 * @param mockFiles Required object of filename -> contents pairs.
4 * @param mockDirs Required object of pathname -> filenames pairs.
5 * @note Pathnames in mockDirs must NOT end in a slash.
6 */
7var createFsMock = function(mockFiles, mockDirs) {
8 if (typeof mockFiles !== "object") {
9 throw new TypeError("createFsMock expects a map of filename -> contents as first argument");
10 }
11 if (mockDirs !== undefined && typeof mockDirs !== "object") {
12 throw new TypeError("createFsMock expects a map of pathname -> filenames as second argument");
13 }
14 return {
15 _setFiles: function(newMockFiles) {
16 mockFiles = newMockFiles;
17 },
18 _setDirs: function(newMockDirs) {
19 mockDirs = newMockDirs;
20 },
21 read: jasmine.createSpy('fsReadSpy').and.callFake(function(filename) {
22 if (!(filename in mockFiles)) {
23 return Q.reject(new Error("unknown file: " + filename));
24 }
25 return Q.when(angular.copy(mockFiles[filename]));
26 }),
27 list: jasmine.createSpy('fsListSpy').and.callFake(function(dirname) {
28 // Strip trailing slash
29 if (dirname[dirname.length - 1] === "/") {
30 dirname = dirname.slice(0, -1);
31 }
32 if (!(dirname in mockDirs)) {
33 return Q.reject(new Error("unknown dir: " + dirname));
34 }
35 return Q.when(angular.copy(mockDirs[dirname]));
36 }),
37 write: jasmine.createSpy('fsWriteSpy').and.callFake(function() {
38 return Q.when(true);
39 }),
40 remove: jasmine.createSpy('fsRemoveSpy').and.callFake(function() {
41 return Q.when(true);
42 })
43 };
44};