Skip to content

Commit 080843f

Browse files
committed
test: update
1 parent f3e81d5 commit 080843f

13 files changed

+131
-162
lines changed

src/components/carousel/test/CCarousel.spec.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { mount } from '@vue/test-utils'
22
import Component from '../CCarousel'
33
import CCarouselItem from '../CCarouselItem'
44

5-
const props = Object.assign({}, CCarouselItem.props, { active: { default: true}})
6-
const item = Object.assign({}, CCarouselItem, { props })
5+
// const props = Object.assign({}, CCarouselItem.props, { active: { default: true}})
6+
// const item = Object.assign({}, CCarouselItem, { props })
77

88
const ComponentName = 'CCarousel'
99
const defaultWrapper = mount(Component)
@@ -19,7 +19,10 @@ const createWrapper = () => {
1919
height: '200'
2020
},
2121
slots: {
22-
default: [item, CCarouselItem, CCarouselItem]
22+
default: ['<CCarouselItem :active="true"/>', CCarouselItem, CCarouselItem]
23+
},
24+
stubs: {
25+
CCarouselItem
2326
}
2427
})
2528
}
@@ -61,7 +64,7 @@ describe(ComponentName, () => {
6164
const nextArrowClick = () => nextButton.trigger('click')
6265

6366
jest.useFakeTimers()
64-
customWrapper.setData({ waitingItem: null, transitioning: false })
67+
customWrapper.setData({ transitioning: false })
6568

6669
nextArrowClick()
6770
expect(customWrapper.vm.transitioning).toBe(true)

src/components/dropdown/tests/CDropdown.spec.js

Lines changed: 69 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,68 @@
11
import { mount, createLocalVue } from '@vue/test-utils'
2-
import Component from '../CDropdown'
3-
import CDropdownItem from '../CDropdownItem'
2+
import {
3+
CDropdown,
4+
CDropdownItem,
5+
CDropdownHeader,
6+
CDropdownDivider
7+
} from '../index'
8+
import VueRouter from 'vue-router'
9+
410
const ComponentName = 'CDropdown'
511

6-
const generateWrapper = () => mount(Component, {
7-
attachToDocument: true,
8-
propsData: {
9-
togglerText: 'Dropdown button',
10-
show: true,
11-
addMenuClasses: 'additional-menu-class',
12-
addTogglerClasses: 'additional-toggler-class',
13-
inNav: false,
14-
caret: false,
15-
color: 'success',
16-
size: 'lg',
17-
split: true,
18-
offset: [20, 0],
19-
placement: 'right-end',
20-
flip: false,
12+
const localVue = new createLocalVue()
13+
localVue.use(VueRouter)
14+
const router = new VueRouter()
15+
16+
const dropdownProps = {
17+
togglerText: 'Dropdown button',
18+
show: true,
19+
addMenuClasses: 'additional-menu-class',
20+
addTogglerClasses: 'additional-toggler-class',
21+
inNav: false,
22+
caret: false,
23+
color: 'success',
24+
size: 'lg',
25+
split: true,
26+
offset: [20, 0],
27+
placement: 'right-end',
28+
flip: false
29+
}
30+
31+
const App = localVue.extend({
32+
router,
33+
components: {
34+
CDropdown,
35+
CDropdownItem,
36+
CDropdownHeader,
37+
CDropdownDivider
2138
},
39+
render (h) {
40+
return h('CDropdown', { props: dropdownProps }, [
41+
h('CDropdownHeader', ['header']),
42+
h('CDropdownItem', { props: { to: '/buttons' } }, ['Router-link']),
43+
h('CDropdownDivider'),
44+
//router link item
45+
h('CDropdownItem', { props: { to: '/dashboard' } }, ['Router-link'])
46+
])
47+
}
48+
})
49+
50+
const generateAppWrapper = () => mount(App, { localVue })
51+
52+
53+
const generateWrapper = () => mount(CDropdown, {
54+
attachToDocument: true,
55+
propsData: dropdownProps,
2256
slots: {
23-
default: [CDropdownItem, CDropdownItem]
57+
default: [
58+
CDropdownHeader,
59+
CDropdownItem,
60+
CDropdownDivider
61+
]
2462
}
2563
})
2664

27-
const generateNavWrapper = () => mount(Component, {
65+
const generateNavWrapper = () => mount(CDropdown, {
2866
propsData: {
2967
addMenuClasses: 'additional-menu-class',
3068
addTogglerClasses: 'additional-toggler-class',
@@ -43,14 +81,17 @@ const generateNavWrapper = () => mount(Component, {
4381

4482
describe(ComponentName, () => {
4583
it('has a name', () => {
46-
expect(Component.name).toMatch(ComponentName)
84+
expect(CDropdown.name).toMatch(ComponentName)
4785
})
4886
it('renders basic wrapper correctly', () => {
49-
expect(mount(Component).element).toMatchSnapshot()
87+
expect(mount(CDropdown).element).toMatchSnapshot()
5088
})
5189
it('renders custom wrapper correctly', () => {
5290
expect(generateWrapper().element).toMatchSnapshot()
5391
})
92+
it('renders dropdown with router links correctly', () => {
93+
expect(generateWrapper().element).toMatchSnapshot()
94+
})
5495
it('renders correctly inNav', () => {
5596
expect(generateNavWrapper().element).toMatchSnapshot()
5697
})
@@ -66,6 +107,13 @@ describe(ComponentName, () => {
66107
wrapper.vm.$children[0].$el.click()
67108
expect(wrapper.vm.visible).toBe(false)
68109
})
110+
it('hide when dropdown item - router link is clicked', () => {
111+
const wrapper = generateAppWrapper()
112+
const isVisible = () => wrapper.vm.$children[0].visible
113+
expect(isVisible()).toBe(true)
114+
wrapper.findAll('.dropdown-item').at(1).trigger('click')
115+
expect(isVisible()).toBe(false)
116+
})
69117
it('close, but does not open on click when dropdown is disabled', () => {
70118
const customWrapper = generateWrapper()
71119
const toggle = () => {

src/components/dropdown/tests/CDropdownDivider.spec.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/components/dropdown/tests/CDropdownHeader.spec.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/components/dropdown/tests/CDropdownItem.spec.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/components/dropdown/tests/__snapshots__/CDropdown.spec.js.snap

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,56 @@ exports[`CDropdown renders custom wrapper correctly 1`] = `
5959
<div
6060
class="additional-menu-class dropdown-menu show"
6161
>
62+
<div
63+
class="dropdown-header"
64+
/>
6265
<a
6366
class="dropdown-item"
6467
href="#"
6568
role="menuitem"
6669
target="_self"
6770
/>
71+
<div
72+
class="dropdown-divider"
73+
role="separator"
74+
/>
75+
</div>
76+
</div>
77+
`;
78+
79+
exports[`CDropdown renders dropdown with router links correctly 1`] = `
80+
<div
81+
class="dropright show btn-group"
82+
>
83+
<button
84+
class="additional-toggler-class btn btn-lg btn-success"
85+
>
86+
Dropdown button
87+
</button>
88+
89+
<button
90+
aria-expanded="true"
91+
aria-haspopup="true"
92+
class="dropdown-toggle dropdown-toggle-split additional-toggler-class btn btn-lg btn-success"
93+
type="button"
94+
/>
95+
96+
<div
97+
class="additional-menu-class dropdown-menu show"
98+
>
99+
<div
100+
class="dropdown-header"
101+
/>
68102
<a
69103
class="dropdown-item"
70104
href="#"
71105
role="menuitem"
72106
target="_self"
73107
/>
108+
<div
109+
class="dropdown-divider"
110+
role="separator"
111+
/>
74112
</div>
75113
</div>
76114
`;

src/components/dropdown/tests/__snapshots__/CDropdownDivider.spec.js.snap

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/components/dropdown/tests/__snapshots__/CDropdownHeader.spec.js.snap

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/components/dropdown/tests/__snapshots__/CDropdownItem.spec.js.snap

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/components/form/tests/CSelect.spec.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,25 @@ const wrapperPlaintext = mount(Component, {
66
propsData: {
77
id: 'some_id',
88
plaintext: true,
9-
options: ['Option 1', 'Option 2', { value: 'Option 3 '}],
9+
options: ['Option 1', 'Option 2', { value: 'Option 3'}],
1010
placeholder: 'placeholder',
1111
size: 'lg'
1212
}
1313
})
1414
const customSimpleWrapper = mount(Component, {
1515
propsData: {
1616
id: 'some_id',
17-
options: ['Option 1', 'Option 2', { value: 'Option 3 '}],
17+
options: ['Option 1', 'Option 2', { value: 'Option 3'}],
1818
size: 'lg',
1919
custom: true
2020
}
2121
})
2222
const customWrapper = mount(Component, {
23+
attachToDocument: true,
2324
propsData: {
2425
label: 'label',
2526
id: 'some_id',
26-
options: ['Option 1', 'Option 2', { value: 'Option 3 '}],
27+
options: ['Option 1', 'Option 2', { value: 'Option 3'}],
2728
placeholder: 'placeholder',
2829
wasValidated: true,
2930
checked: true,
@@ -69,6 +70,10 @@ describe(ComponentName, () => {
6970
select.element.value = 'Option 2'
7071
select.trigger('input')
7172
expect(customWrapper.emitted()['update:value']).toBeTruthy()
73+
const select2 = customSimpleWrapper.find('select')
74+
select2.element.value = 'Option 3'
75+
select2.trigger('input')
76+
expect(customSimpleWrapper.emitted()['update:value']).toBeTruthy()
7277
})
7378
it('not emit update event on multiple select', () => {
7479
const select = wrapperMultiple.find('select')

0 commit comments

Comments
 (0)