-
Notifications
You must be signed in to change notification settings - Fork 668
/
Copy pathconfig.spec.js
117 lines (100 loc) · 3.17 KB
/
config.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
111
112
113
114
115
116
117
import { describeWithShallowAndMount } from '~resources/utils'
import ComponentWithProps from '~resources/components/component-with-props.vue'
import { config, createLocalVue } from '@vue/test-utils'
import ComponentWithTransitions from '~resources/components/component-with-transitions.vue'
describeWithShallowAndMount('config', mountingMethod => {
const sandbox = sinon.createSandbox()
let configStubsSave
let configSilentSave
beforeEach(() => {
configStubsSave = config.stubs
configSilentSave = config.silent
sandbox.stub(console, 'error').callThrough()
})
afterEach(() => {
config.stubs = configStubsSave
config.silent = configSilentSave
config.methods = {}
sandbox.reset()
sandbox.restore()
})
it('mocks a global variable', () => {
const localVue = createLocalVue()
const t = 'real value'
localVue.prototype.$t = t
const testComponent = {
template: `
<div>{{ $t }}</div>
`
}
config.mocks['$t'] = 'mock value'
const wrapper = mountingMethod(testComponent, {
localVue,
t
})
expect(wrapper.vm.$t).to.equal('mock value')
expect(wrapper.text()).to.equal('mock value')
localVue.prototype.$t = undefined
})
it('overrides a method', () => {
const testComponent = {
template: `
<div>{{ val() }}</div>
`
}
config.methods['val'] = () => 'method'
const wrapper = mountingMethod(testComponent)
expect(wrapper.vm.val()).to.equal('method')
expect(wrapper.text()).to.equal('method')
})
it("doesn't throw Vue warning when silent is set to true", () => {
config.silent = true
const localVue = createLocalVue()
const wrapper = mountingMethod(ComponentWithProps, {
propsData: {
prop1: 'example'
},
localVue
})
expect(wrapper.vm.prop1).to.equal('example')
wrapper.setProps({
prop1: 'new value'
})
expect(console.error).not.calledWith(sandbox.match('[Vue warn]'))
})
it('does throw Vue warning when silent is set to false', () => {
config.silent = false
const localVue = createLocalVue()
const wrapper = mountingMethod(ComponentWithProps, {
propsData: {
prop1: 'example'
},
localVue
})
expect(wrapper.vm.prop1).to.equal('example')
wrapper.setProps({
prop1: 'new value'
})
expect(console.error).calledWith(sandbox.match('[Vue warn]'))
})
it('stubs out transitions by default', async () => {
const wrapper = mountingMethod(ComponentWithTransitions)
expect(wrapper.find('[data-testid="expanded"]').exists()).to.equal(true)
wrapper.setData({ expanded: true })
await wrapper.vm.$nextTick()
expect(wrapper.find('[data-testid="expanded"]').exists()).to.equal(false)
})
it('allows control deprecation warnings visibility', () => {
config.showDeprecationWarnings = true
const Component = {
name: 'Foo',
template: '<div>Foo</div>'
}
const wrapper = mountingMethod(Component)
wrapper.name()
expect(console.error).to.be.calledWith(sandbox.match('name is deprecated'))
config.showDeprecationWarnings = false
wrapper.name()
expect(console.error).to.have.callCount(1)
})
})