UNPKG

3.5 kBJavaScriptView Raw
1var assert = require("assert");
2var file = require('../file-system');
3var fs = require('fs');
4var path = require('path');
5
6function getPath(filepath) {
7 return path.join(__dirname, filepath);
8}
9
10describe('recurse', function() {
11 var allFiles = [
12 [
13 getPath('var/recurse/simple/1/1.html'),
14 getPath('var/recurse/simple/1/2.html'),
15 getPath('var/recurse/simple/1.html')
16 ],
17 [
18 getPath('var/recurse/filter/1/demo.js'),
19 getPath('var/recurse/filter/1/2/demo.js'),
20 getPath('var/recurse/filter/1/2/demo.css'),
21 getPath('var/recurse/filter/1/2/demo.html'),
22 getPath('var/recurse/filter/demo.html'),
23 getPath('var/recurse/filter/demo.js'),
24 getPath('var/recurse/filter/demo.css')
25 ],
26 [
27 getPath('var/recurse/copy/1/demo.js'),
28 getPath('var/recurse/copy/1/2/demo.js'),
29 getPath('var/recurse/copy/1/2/demo.css'),
30 getPath('var/recurse/copy/1/2/demo.html'),
31 getPath('var/recurse/copy/demo.html'),
32 getPath('var/recurse/copy/demo.js'),
33 getPath('var/recurse/copy/demo.css')
34 ]
35 ];
36
37 before(function() {
38 allFiles.forEach(function(files) {
39 files.forEach(function(item) {
40 file.writeFileSync(item);
41 });
42 });
43 });
44
45 it('recurse files', function(done) {
46 var filesPath = allFiles[0];
47 var count = 0;
48
49 file.recurse(getPath('var/recurse/simple'), function(filepath, relative, filename) {
50 if (filename) {
51 assert.equal(true, filesPath.indexOf(filepath) != -1);
52
53 if (++count == filesPath.length) {
54 done();
55 }
56 }
57 });
58 });
59
60 it('recurseSync files', function() {
61 var filesPath = [];
62 file.recurseSync(getPath('var/recurse/filter'), function(filepath, relative, filename) {
63 if (filename) {
64 filesPath.push(filepath);
65 }
66 });
67
68 assert.equal(filesPath.length, allFiles[1].length);
69 });
70
71 it('recurseSync filter files', function() {
72 var filesPath = [];
73 file.recurseSync(getPath('var/recurse/filter'), [
74 'demo.js',
75 '1/**/*.css'
76 ], function(filepath, filename) {
77 if (filename) {
78 filesPath.push(filepath);
79 }
80 });
81 var filterPath = [
82 getPath('var/recurse/filter/1/2/demo.css'),
83 getPath('var/recurse/filter/demo.js')
84 ];
85
86 assert.deepEqual(filesPath, filterPath);
87 });
88
89 it('copySync files', function() {
90 var dest = getPath('var/recurse/dest');
91 var destFiles = [];
92
93 file.copySync(getPath('var/recurse/copy'), dest);
94
95 file.recurseSync(dest, function(filepath, relative, filename) {
96 if (!filename) return;
97
98 destFiles.push(filepath);
99 });
100
101 assert.equal(destFiles.length, allFiles[2].length);
102 });
103
104 it('copySync empty folder', function() {
105 var dest = getPath('var/recurse/copy/emptydest');
106 var src = getPath('var/recurse/copy/empty');
107
108 file.mkdirSync(src);
109 file.copySync(src, dest);
110
111 var existsSync = fs.existsSync(dest);
112
113 assert.equal(existsSync, true);
114 });
115
116 it('copySync process content', function() {
117 var src = getPath('var/recurse/copyprocess/');
118 var dest = getPath('var/recurse/copyprocess/dest');
119
120 file.writeFileSync(path.join(src, '1.html'), 'a');
121
122 file.copySync(src, dest, {
123 process: function(contents, filepath) {
124 return 'b';
125 }
126 });
127
128 var contents = fs.readFileSync(path.join(dest, '1.html'));
129
130 assert.equal('b', contents);
131 });
132
133 after(function() {
134 file.rmdirSync(getPath('var/recurse'));
135 });
136});
\No newline at end of file