1 | var build = require('../lib/build'),
|
2 | fu = require('../lib/fileUtil');
|
3 |
|
4 | describe('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 | });
|