-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
/
Copy pathpreset.spec.js
110 lines (89 loc) · 2.98 KB
/
preset.spec.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
jest.mock('inquirer')
const { expectPrompts } = require('inquirer')
const path = require('path')
const fs = require('fs-extra')
const create = require('@vue/cli/lib/create')
test('fetching local preset with prompts and generator', async () => {
const cwd = path.resolve(__dirname, '../../../test')
const name = 'test-preset'
expectPrompts([{
message: 'Are you ok',
confirm: true
}])
await create(
name,
{
force: true,
git: false,
cwd,
preset: path.resolve(__dirname, './mock-preset')
}
)
const testFile = await fs.readFile(path.resolve(cwd, name, 'test.js'), 'utf-8')
expect(testFile).toBe('true')
const pkg = require(path.resolve(cwd, name, 'package.json'))
expect(pkg.devDependencies).toHaveProperty('@vue/cli-plugin-babel')
})
test('should recognize generator/index.js in a local preset directory', async () => {
const cwd = path.resolve(__dirname, '../../../test')
const name = 'test-preset-template'
expectPrompts([{
message: 'Are you ok',
confirm: true
}])
await create(
name,
{
force: true,
git: false,
cwd,
preset: path.resolve(__dirname, './mock-preset-with-template')
}
)
const testFile = await fs.readFile(path.resolve(cwd, name, 'test.js'), 'utf-8')
expect(testFile).toBe('true\n')
const pkg = require(path.resolve(cwd, name, 'package.json'))
expect(pkg.devDependencies).toHaveProperty('@vue/cli-plugin-babel')
})
test('should recognize generator/index.js in a local preset directory by async generatory', async () => {
const cwd = path.resolve(__dirname, '../../../test')
const name = 'test-preset-template-async-generator'
expectPrompts([{
message: 'Are you ok',
confirm: true
}])
await create(
name,
{
force: true,
git: false,
cwd,
preset: path.resolve(__dirname, './mock-preset-with-async-generator')
}
)
const testFile = await fs.readFile(path.resolve(cwd, name, 'test.js'), 'utf-8')
expect(testFile).toBe('true\n')
const pkg = require(path.resolve(cwd, name, 'package.json'))
expect(pkg.devDependencies).toHaveProperty('@vue/cli-plugin-babel')
expect(pkg.devDependencies).toHaveProperty('vue-cli-plugin-async-generator')
expect(pkg.scripts).toHaveProperty('testasync')
// as the package.json includes a made-up dep, it may interfere with other tests that requires installation
await fs.remove(path.resolve(cwd, name, 'package.json'))
})
test('should not override the README.md generated by plugins', async () => {
const cwd = path.resolve(__dirname, '../../../test')
const name = 'test-preset-readme'
await create(
name,
{
force: true,
git: false,
cwd,
preset: path.resolve(__dirname, './mock-preset-with-readme')
}
)
const readme = await fs.readFile(path.resolve(cwd, name, 'README.md'), 'utf-8')
expect(readme).toBe('hello')
const pkg = require(path.resolve(cwd, name, 'package.json'))
expect(pkg.devDependencies).toHaveProperty('@vue/cli-plugin-babel')
})