mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-02-09 08:28:29 -06:00
Now that most Vue 3 core packages has reached stable, I think it makes sense to remove the word "Preview". Remaining dependencies to reach stable: - @vue/test-utils 2.x (in RC) - vue-class-component 8.x (in RC) - vue-jest v5 (in alpha)
118 lines
2.4 KiB
JavaScript
118 lines
2.4 KiB
JavaScript
jest.mock('fs')
|
|
jest.mock('inquirer')
|
|
|
|
const { defaults } = require('../lib/options')
|
|
const assertPromptModule = require('@vue/cli-test-utils/assertPromptModule')
|
|
|
|
test('default', async () => {
|
|
const expectedPrompts = [
|
|
{
|
|
message: 'pick a preset',
|
|
choices: [
|
|
'Default',
|
|
'Default (Vue 3)',
|
|
'Manually select'
|
|
],
|
|
choose: 0
|
|
},
|
|
{
|
|
message: 'package manager',
|
|
choices: ['Yarn', 'PNPM', 'NPM'],
|
|
choose: 0
|
|
}
|
|
]
|
|
await assertPromptModule([], expectedPrompts, defaults.presets.default)
|
|
})
|
|
|
|
test('manual + PromptModuleAPI', async () => {
|
|
const mockModule = api => {
|
|
api.injectFeature({
|
|
name: 'Foo',
|
|
value: 'foo'
|
|
})
|
|
api.injectFeature({
|
|
name: 'Bar',
|
|
value: 'bar'
|
|
})
|
|
api.injectPrompt({
|
|
name: 'customFoo',
|
|
message: 'customFoo',
|
|
when: answers => answers.features.includes('foo'),
|
|
type: 'confirm'
|
|
})
|
|
api.injectPrompt({
|
|
name: 'customBar',
|
|
message: 'customBar',
|
|
when: answers => answers.features.includes('bar'),
|
|
type: 'list',
|
|
choices: []
|
|
})
|
|
api.injectOptionForPrompt('customBar', {
|
|
name: 'barChoice',
|
|
value: 'barChoice'
|
|
})
|
|
api.onPromptComplete((answers, options) => {
|
|
if (answers.features.includes('bar')) {
|
|
options.plugins.bar = {}
|
|
}
|
|
if (answers.customBar === 'barChoice') {
|
|
options.plugins.barChoice = {}
|
|
}
|
|
})
|
|
}
|
|
|
|
const expectedPrompts = [
|
|
{
|
|
message: 'Please pick a preset',
|
|
choose: 2 // manual
|
|
},
|
|
{
|
|
message: 'Check the features',
|
|
choices: ['Foo', 'Bar'],
|
|
check: [1]
|
|
},
|
|
{
|
|
message: 'customBar',
|
|
choices: ['barChoice'],
|
|
choose: 0
|
|
},
|
|
{
|
|
message: 'Where do you prefer placing config',
|
|
choices: ['dedicated', 'package.json'],
|
|
choose: 0
|
|
},
|
|
{
|
|
message: 'Save this as a preset',
|
|
confirm: true
|
|
},
|
|
{
|
|
message: 'Save preset as',
|
|
input: 'test'
|
|
}
|
|
]
|
|
|
|
const expectedOptions = {
|
|
useConfigFiles: true,
|
|
plugins: {
|
|
bar: {},
|
|
barChoice: {}
|
|
}
|
|
}
|
|
|
|
await assertPromptModule(mockModule, expectedPrompts, expectedOptions)
|
|
|
|
// should be saved now
|
|
const expectedPromptsForSaved = [
|
|
{
|
|
choices: [
|
|
'test',
|
|
'Default',
|
|
'Default (Vue 3)',
|
|
'Manually'
|
|
],
|
|
choose: 0
|
|
}
|
|
]
|
|
await assertPromptModule([], expectedPromptsForSaved, expectedOptions)
|
|
})
|