UNPKG

5.13 kBJavaScriptView Raw
1var build = require('../lib/build'),
2 fu = require('../lib/fileUtil');
3
4describe('build utils', function() {
5 describe('#filterResource', function() {
6 it('should filter on platform', function() {
7 build.filterResource({}, {platform: 'web'}).should.be.true;
8 build.filterResource({platform: 'web'}, {platform: 'web'}).should.be.true;
9
10 build.filterResource({platform: 'web'}, {platform: 'ipad'}).should.be.false;
11
12 build.filterResource({platforms: ['web', 'iphone']}, {platform: 'iphone'}).should.be.true;
13 build.filterResource({platforms: ['web', 'iphone']}, {platform: 'ipad'}).should.be.false;
14 });
15 it('should filter on not platform', function() {
16 build.filterResource({platform: {not: 'ipad'}}, {platform: 'web'}).should.be.true;
17
18 build.filterResource({platform: {not: 'ipad'}}, {platform: 'ipad'}).should.be.false;
19
20 build.filterResource({platforms: {not: ['ipad', 'iphone']}}, {platform: 'web'}).should.be.true;
21 build.filterResource({platforms: {not: ['ipad', 'iphone']}}, {platform: 'ipad'}).should.be.false;
22 });
23
24 it('should filter on package', function() {
25 build.filterResource({}, {package: 'web'}).should.be.true;
26 build.filterResource({package: 'web'}, {package: 'web'}).should.be.true;
27
28 build.filterResource({package: 'web'}, {package: 'ipad'}).should.be.false;
29
30 build.filterResource({packages: ['web', 'iphone']}, {package: 'iphone'}).should.be.true;
31 build.filterResource({packages: ['web', 'iphone']}, {package: 'ipad'}).should.be.false;
32 });
33 it('should filter on not package', function() {
34 build.filterResource({package: {not: 'ipad'}}, {package: 'web'}).should.be.true;
35
36 build.filterResource({package: {not: 'ipad'}}, {package: 'ipad'}).should.be.false;
37
38 build.filterResource({packages: {not: ['ipad', 'iphone']}}, {package: 'web'}).should.be.true;
39 build.filterResource({packages: {not: ['ipad', 'iphone']}}, {package: 'ipad'}).should.be.false;
40 });
41
42 it('should filter on combined mode', function() {
43 build.filterResource({}, {combined: true}).should.be.true;
44 build.filterResource({}, {combined: false}).should.be.true;
45
46 build.filterResource({combined: true}, {combined: true}).should.be.true;
47 build.filterResource({combined: true}, {combined: false}).should.be.false;
48 build.filterResource({combined: true}, {}).should.be.false;
49
50 build.filterResource({combined: false}, {combined: true}).should.be.false;
51 build.filterResource({combined: false}, {combined: false}).should.be.true;
52 build.filterResource({combined: false}, {}).should.be.true;
53 });
54
55 it('should combine filters', function() {
56 build.filterResource({}, {package: 'web', platform: 'foo'}).should.be.true;
57 build.filterResource({package: 'web', platform: 'foo'}, {package: 'web', platform: 'foo'}).should.be.true;
58
59 build.filterResource({package: 'iphone', platform: 'foo'}, {package: 'web', platform: 'foo'}).should.be.false;
60 build.filterResource({package: 'web', platform: 'bar'}, {package: 'web', platform: 'foo'}).should.be.false;
61 });
62
63 it('should combine original resource', function() {
64 build.filterResource({originalResource: {}}, {package: 'web'}).should.be.true;
65 build.filterResource({package: 'web', originalResource: {}}, {package: 'web'}).should.be.true;
66 build.filterResource({originalResource: {package: 'web'}}, {package: 'web'}).should.be.true;
67
68 build.filterResource({package: 'web', originalResource: {package: 'iphone'}}, {package: 'web'}).should.be.false;
69 });
70 });
71
72 describe('#loadResources', function() {
73 it('should handle moduleResources error', function() {
74 var context = {
75 plugins: {
76 moduleResources: function(context, callback) {
77 callback(new Error('FAILED'));
78 }
79 }
80 };
81
82 var spy = this.spy(function(err) {
83 err.should.be.instanceOf(Error);
84 });
85 build.loadResources(context, spy);
86 spy.should.have.been.calledOnce;
87 });
88 it('should handle fileList error', function() {
89 var context = {
90 plugins: {
91 moduleResources: function(context, callback) {
92 callback();
93 },
94 fileFilter: function() {}
95 }
96 };
97 this.stub(fu, 'fileList', function(files, filter, callback) {
98 callback(new Error('FAILED'));
99 });
100
101 var spy = this.spy(function(err) {
102 err.should.be.instanceOf(Error);
103 });
104 build.loadResources(context, spy);
105 spy.should.have.been.calledOnce;
106 });
107 });
108
109 describe('#processResources', function() {
110 it('should handle resource errors', function() {
111 var context = {
112 clone: function() {
113 return this;
114 },
115 plugins: {
116 resource: function(context, callback) {
117 callback(new Error('FAILED'));
118 }
119 }
120 };
121
122 var spy = this.spy(function(err) {
123 err.should.be.instanceOf(Error);
124 });
125 build.processResources([1], context, spy);
126 spy.should.have.been.calledOnce;
127 });
128 });
129});