This repository has been archived by the owner on Feb 27, 2019. It is now read-only.
/
index.js
73 lines (67 loc) · 2.86 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
const path = require('path');
const test = require('ava');
const chai = require('chai');
const expect = chai.expect;
const spies = require('chai-spies');
chai.use(spies);
const TestUtils = require('fountain-generator').TestUtils;
let context;
const files = [
'src/index.html',
'src/index.js',
'src/index.css',
'src/app/actions/index.js',
'src/app/actions/index.spec.js',
'src/app/components/Footer.js',
'src/app/components/Footer.spec.js',
'src/app/components/Header.js',
'src/app/components/Header.spec.js',
'src/app/components/MainSection.js',
'src/app/components/MainSection.spec.js',
'src/app/components/TodoItem.js',
'src/app/components/TodoItem.spec.js',
'src/app/components/TodoTextInput.js',
'src/app/components/TodoTextInput.spec.js',
'src/app/constants/ActionTypes.js',
'src/app/constants/TodoFilters.js',
'src/app/containers/App.js',
'src/app/reducers/index.js',
'src/app/reducers/todos.js',
'src/app/reducers/todos.spec.js'
];
test.before(() => {
context = TestUtils.mock('todoMVC/inject');
require('../../../generators/todoMVC/inject/index');
process.chdir(path.resolve(__dirname, '../../../'));
});
test(`Add deps to package.json dependencies`, t => {
TestUtils.call(context, 'configuring');
t.is(context.mergeJson['package.json'].dependencies.classnames, '^2.2.5');
t.is(context.mergeJson['package.json'].dependencies['react-dom'], '^15.4.2');
t.is(context.mergeJson['package.json'].dependencies['react-redux'], 'https://cdnjs.cloudflare.com/ajax/libs/react-redux/5.0.2/react-redux.js');
t.is(context.mergeJson['package.json'].dependencies.redux, 'https://cdnjs.cloudflare.com/ajax/libs/redux/3.6.0/redux.js');
t.is(context.mergeJson['package.json'].dependencies['es6-shim'], '^0.35.3');
t.is(context.mergeJson['package.json'].dependencies['todomvc-app-css'], '^2.0.6');
t.is(context.mergeJson['package.json'].devDependencies['@types/classnames'], '^0.0.32');
t.is(context.mergeJson['package.json'].devDependencies['@types/react-redux'], '^4.4.36');
});
test(`Call this.copyTemplate 13 times`, t => {
const spy = chai.spy.on(context, 'copyTemplate');
TestUtils.call(context, 'writing.src', {
js: 'babel',
version: require('../../../package.json').version,
date: new Date().toString()
});
expect(spy).to.have.been.called.exactly(files.length);
files.filter(file => file !== 'src/index.css').forEach(file => t.true(context.copyTemplate[file].length > 0));
});
test(`Call this.copyTemplate 14 times when js is 'typescript'`, t => {
const spy = chai.spy.on(context, 'copyTemplate');
TestUtils.call(context, 'writing.src', {
js: 'typescript',
version: require('../../../package.json').version,
date: new Date().toString()
});
expect(spy).to.have.been.called.exactly(files.length + 1);
files.filter(file => file !== 'src/index.css').forEach(file => t.true(context.copyTemplate[file].length > 0));
});