Skip to content

Commit fbcacfb

Browse files
committed
feat(uikits): additional test coverage of the main API
1 parent 6309e69 commit fbcacfb

File tree

1 file changed

+149
-16
lines changed

1 file changed

+149
-16
lines changed

packages/core/test/index_tests.js

Lines changed: 149 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ const rewire = require('rewire');
33
const _ = require('lodash');
44
const fs = require('fs-extra');
55
const get = require('../src/lib/get');
6+
const events = require('../src/lib/events');
67

78
const util = require('./util/test_utils.js');
89
const entry = rewire('../src/index');
910
const defaultConfig = require('../patternlab-config.json');
1011
const testConfig = require('./util/patternlab-config.json');
12+
const packageInfo = require('./../package');
1113

1214
process.env.PATTERNLAB_ENV = 'CI';
1315

@@ -44,23 +46,143 @@ const fsMock = {
4446
},
4547
};
4648

49+
const loadUIKitsMock = () => {
50+
return Promise.resolve();
51+
};
52+
53+
const buildPatternsMock = () => {
54+
return Promise.resolve();
55+
};
56+
4757
//set our mocks in place of usual require()
4858
entry.__set__({
4959
ui_builder: uiBuilderMock,
5060
fs: fsMock,
5161
copier: copierMock,
5262
});
5363

54-
tap.test('getDefaultConfig - should return the default config object', function(
55-
test
56-
) {
57-
const requestedConfig = entry.getDefaultConfig();
58-
test.type(requestedConfig, 'object');
59-
test.equals(requestedConfig, defaultConfig);
64+
tap.test('version - should call patternlab.getVersion', test => {
65+
//arrange
66+
const pl = new entry(testConfig);
67+
68+
//act
69+
//assert
70+
test.equals(pl.version(), packageInfo.version);
6071
test.end();
6172
});
6273

63-
tap.test('buildPatterns', function() {
74+
tap.test(
75+
'getDefaultConfig - static method should return the default config object',
76+
test => {
77+
const requestedConfig = entry.getDefaultConfig();
78+
test.type(requestedConfig, 'object');
79+
test.equals(requestedConfig, defaultConfig);
80+
test.end();
81+
}
82+
);
83+
84+
tap.test(
85+
'getDefaultConfig - instance method should return the default config object',
86+
test => {
87+
//arrange
88+
const pl = new entry(testConfig);
89+
90+
//act
91+
//assert
92+
const requestedConfig = pl.getDefaultConfig();
93+
test.type(requestedConfig, 'object');
94+
test.equals(requestedConfig, defaultConfig);
95+
test.end();
96+
}
97+
);
98+
99+
tap.test(
100+
'getSupportedTemplateExtensions - calls patternlab.getSupportedTemplateExtensions and returns default template engine extensions',
101+
test => {
102+
//arrange
103+
const pl = new entry(testConfig);
104+
105+
//act
106+
const expectedExtensions = ['.mustache'];
107+
108+
//assert
109+
test.equals(
110+
pl.getSupportedTemplateExtensions().length,
111+
expectedExtensions.length
112+
);
113+
test.same(pl.getSupportedTemplateExtensions(), expectedExtensions);
114+
test.end();
115+
}
116+
);
117+
118+
tap.test('patternsonly a promise', test => {
119+
//arrange
120+
const revert = entry.__set__('loaduikits', loadUIKitsMock);
121+
const pl = new entry(testConfig);
122+
123+
//act
124+
test.resolves(pl.patternsonly({})).then(() => {
125+
revert();
126+
test.end();
127+
});
128+
});
129+
130+
tap.test('patternsonly calls loaduikits', test => {
131+
//arrange
132+
const revert = entry.__set__('loaduikits', () => {
133+
test.ok(1);
134+
return Promise.resolve();
135+
});
136+
const pl = new entry(testConfig);
137+
138+
//act
139+
test.resolves(pl.patternsonly({})).then(() => {
140+
revert();
141+
test.end();
142+
});
143+
});
144+
145+
tap.test('patternsonly calls buildPatterns', test => {
146+
//arrange
147+
const revert = entry.__set__(
148+
'buildPatterns',
149+
(cleanPublic, patternlab, data) => {
150+
test.type(cleanPublic, 'boolean');
151+
test.ok(cleanPublic);
152+
test.type(patternlab, 'object');
153+
test.type(data, 'object');
154+
test.equals(data.foo, 'bar');
155+
return Promise.resolve();
156+
}
157+
);
158+
const pl = new entry(testConfig);
159+
160+
//act
161+
test
162+
.resolves(pl.patternsonly({ cleanPublic: true, data: { foo: 'bar' } }))
163+
.then(() => {
164+
revert();
165+
test.end();
166+
});
167+
});
168+
169+
tap.test('serve calls serve', test => {
170+
//arrange
171+
const revert = entry.__set__('serve', patternlab => {
172+
test.ok(1);
173+
test.type(patternlab, 'object');
174+
});
175+
176+
const pl = new entry(testConfig);
177+
178+
//act
179+
test.resolves(pl.serve({})).then(() => {
180+
revert();
181+
test.end();
182+
});
183+
});
184+
185+
tap.test('buildPatterns suite', test => {
64186
//arrange
65187

66188
const patternExporterMock = {
@@ -132,7 +254,6 @@ tap.test('buildPatterns', function() {
132254

133255
tap.test('uses global listItem property', test => {
134256
var pattern = get('test-listWithPartial', patternlab);
135-
console.log(pattern.patternPartialCode);
136257
let assertionCount = 0;
137258
['dA', 'dB', 'dC'].forEach(d => {
138259
if (pattern.patternPartialCode.indexOf(d) > -1) {
@@ -224,14 +345,26 @@ tap.test('buildPatterns', function() {
224345
});
225346

226347
testConfig.patternExportPatternPartials = ['test-paramParent'];
227-
var pl = new entry(testConfig);
348+
const pl = new entry(testConfig);
349+
350+
test.equals(pl.events.eventNames().length, 0);
228351

229352
//act
230-
return pl.build({
231-
cleanPublic: true,
232-
data: {
233-
foo: 'Bar',
234-
description: 'Baz',
235-
},
236-
});
353+
return pl
354+
.build({
355+
cleanPublic: true,
356+
data: {
357+
foo: 'Bar',
358+
description: 'Baz',
359+
},
360+
})
361+
.then(() => {
362+
test.equals(
363+
pl.events.eventNames().length,
364+
2,
365+
'should register two events'
366+
);
367+
test.equals(pl.events.listenerCount(events.PATTERNLAB_PATTERN_CHANGE), 1);
368+
test.equals(pl.events.listenerCount(events.PATTERNLAB_GLOBAL_CHANGE), 1);
369+
});
237370
});

0 commit comments

Comments
 (0)