-
Notifications
You must be signed in to change notification settings - Fork 267
/
Copy pathplugins.d-test.ts
50 lines (43 loc) · 1.61 KB
/
plugins.d-test.ts
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
import { expectError } from './index'
import { ComponentPublicInstance } from 'vue'
import { config, VueWrapper } from '../src'
interface OptionsI {
msg: string
}
function PluginWithOptions(
wrapper: VueWrapper<ComponentPublicInstance>,
options: OptionsI
) {
return {}
}
function PluginWithoutOptions(wrapper: VueWrapper<ComponentPublicInstance>) {
return {}
}
function PluginWithOptionalOptions(
wrapper: VueWrapper<ComponentPublicInstance>,
options: OptionsI = { msg: 'hi' }
) {
return {}
}
function PluginWithOptionalOptions2(
wrapper: VueWrapper<ComponentPublicInstance>,
options?: OptionsI
) {
return {}
}
config.plugins.VueWrapper.install(PluginWithOptions, { msg: 'Hello' })
config.plugins.VueWrapper.install(PluginWithoutOptions)
config.plugins.VueWrapper.install(PluginWithOptionalOptions)
config.plugins.VueWrapper.install(PluginWithOptionalOptions2)
config.plugins.VueWrapper.install(PluginWithOptionalOptions, { msg: 'hello' })
config.plugins.VueWrapper.install(PluginWithOptionalOptions2, { msg: 'hello' })
// uncertain if it is possible to forbid this usage
// expectError(config.plugins.VueWrapper.install(PluginWithoutOptions, {}))
// @ts-expect-error option has the wrong type
expectError(config.plugins.VueWrapper.install(PluginWithOptions, { msg: true }))
// @ts-expect-error option is mandatory
expectError(config.plugins.VueWrapper.install(PluginWithOptions, {}))
// @ts-expect-error option is mandatory
expectError(config.plugins.VueWrapper.install(PluginWithOptionalOptions, {}))
// @ts-expect-error option is mandatory
expectError(config.plugins.VueWrapper.install(PluginWithOptionalOptions2, {}))