@gitlab/ui 112.1.1 → 112.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,268 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { waitNT, waitRAF } from '../../../tests/utils'
3
- import { BNavItemDropdown } from './nav-item-dropdown'
4
-
5
- describe('nav-item-dropdown', () => {
6
- it('has expected default structure', async () => {
7
- const wrapper = mount(BNavItemDropdown)
8
-
9
- expect(wrapper.vm).toBeDefined()
10
- await waitNT(wrapper.vm)
11
-
12
- expect(wrapper.element.tagName).toBe('LI')
13
- expect(wrapper.element.hasAttribute('id')).toBe(true)
14
- expect(wrapper.classes()).toContain('nav-item')
15
- expect(wrapper.classes()).toContain('b-nav-dropdown')
16
- expect(wrapper.classes()).toContain('dropdown')
17
-
18
- const $toggle = wrapper.find('.dropdown-toggle')
19
- expect($toggle.element.tagName).toBe('A')
20
- expect($toggle.element.hasAttribute('id')).toBe(true)
21
- expect($toggle.attributes('role')).toEqual('button')
22
- expect($toggle.attributes('aria-haspopup')).toEqual('true')
23
- expect($toggle.attributes('aria-expanded')).toEqual('false')
24
- expect($toggle.attributes('href')).toEqual('#')
25
- expect($toggle.classes()).toContain('dropdown-toggle')
26
- expect($toggle.classes()).toContain('nav-link')
27
-
28
- const $menu = wrapper.find('.dropdown-menu')
29
- expect($menu.element.tagName).toBe('UL')
30
- expect($menu.attributes('tabindex')).toEqual('-1')
31
- expect($menu.attributes('aria-labelledby')).toEqual($toggle.attributes('id'))
32
- expect($menu.classes()).toContain('dropdown-menu')
33
-
34
- wrapper.destroy()
35
- })
36
-
37
- it('should have custom toggle class when "toggle-class" prop set', async () => {
38
- const wrapper = mount(BNavItemDropdown, {
39
- propsData: {
40
- toggleClass: 'nav-link-custom'
41
- }
42
- })
43
-
44
- expect(wrapper.vm).toBeDefined()
45
- await waitNT(wrapper.vm)
46
-
47
- const $toggle = wrapper.find('.dropdown-toggle')
48
- expect($toggle.classes()).toContain('nav-link-custom')
49
-
50
- wrapper.destroy()
51
- })
52
-
53
- it('should be disabled when "disabled" prop set', async () => {
54
- const wrapper = mount(BNavItemDropdown, {
55
- propsData: {
56
- disabled: true
57
- }
58
- })
59
-
60
- expect(wrapper.vm).toBeDefined()
61
- await waitNT(wrapper.vm)
62
-
63
- const $toggle = wrapper.find('.dropdown-toggle')
64
- expect($toggle.classes()).toContain('disabled')
65
- expect($toggle.attributes('aria-disabled')).toBeDefined()
66
-
67
- wrapper.destroy()
68
- })
69
-
70
- it('should have href with ID when "id" prop set', async () => {
71
- const wrapper = mount(BNavItemDropdown, {
72
- propsData: {
73
- id: 'foo'
74
- }
75
- })
76
-
77
- expect(wrapper.vm).toBeDefined()
78
- await waitNT(wrapper.vm)
79
-
80
- expect(wrapper.element.hasAttribute('id')).toBe(true)
81
- expect(wrapper.attributes('id')).toEqual('foo')
82
-
83
- const $toggle = wrapper.find('.dropdown-toggle')
84
- expect($toggle.attributes('href')).toEqual('#foo')
85
-
86
- wrapper.destroy()
87
- })
88
-
89
- it('should have correct toggle content when "text" prop set [DEPRECATED]', async () => {
90
- const wrapper = mount(BNavItemDropdown, {
91
- propsData: {
92
- text: 'foo'
93
- }
94
- })
95
-
96
- expect(wrapper.vm).toBeDefined()
97
- await waitNT(wrapper.vm)
98
-
99
- const $toggle = wrapper.find('.dropdown-toggle')
100
- expect($toggle.text()).toEqual('foo')
101
-
102
- wrapper.destroy()
103
- })
104
-
105
- it('should have correct toggle content when "html" prop set', async () => {
106
- const wrapper = mount(BNavItemDropdown, {
107
- propsData: {
108
- text: 'foo',
109
- html: '<span>bar</span>'
110
- }
111
- })
112
-
113
- expect(wrapper.vm).toBeDefined()
114
- await waitNT(wrapper.vm)
115
-
116
- const $toggle = wrapper.find('.dropdown-toggle')
117
- expect($toggle.find('span').exists()).toBe(true)
118
- expect($toggle.text()).toEqual('bar')
119
-
120
- wrapper.destroy()
121
- })
122
-
123
- it('should have correct toggle content from "text" slot', async () => {
124
- const wrapper = mount(BNavItemDropdown, {
125
- propsData: {
126
- text: 'foo',
127
- html: '<span>bar</span>'
128
- },
129
- slots: {
130
- text: '<strong>baz</strong>'
131
- }
132
- })
133
-
134
- expect(wrapper.vm).toBeDefined()
135
- await waitNT(wrapper.vm)
136
-
137
- const $toggle = wrapper.find('.dropdown-toggle')
138
- expect($toggle.find('strong').exists()).toBe(true)
139
- expect($toggle.text()).toEqual('baz')
140
-
141
- wrapper.destroy()
142
- })
143
-
144
- it('should have correct toggle content from "button-content" slot', async () => {
145
- const wrapper = mount(BNavItemDropdown, {
146
- propsData: {
147
- text: 'foo',
148
- html: '<span>bar</span>'
149
- },
150
- slots: {
151
- 'button-content': '<article>foobar</article>',
152
- text: '<strong>baz</strong>'
153
- }
154
- })
155
-
156
- expect(wrapper.vm).toBeDefined()
157
- await waitNT(wrapper.vm)
158
-
159
- const $toggle = wrapper.find('.dropdown-toggle')
160
- expect($toggle.find('article').exists()).toBe(true)
161
- expect($toggle.text()).toEqual('foobar')
162
-
163
- wrapper.destroy()
164
- })
165
-
166
- it('should have correct menu content for "default" slot', async () => {
167
- let slotScope = null
168
- const wrapper = mount(BNavItemDropdown, {
169
- scopedSlots: {
170
- default(scope) {
171
- slotScope = scope
172
- return this.$createElement('div', 'foo')
173
- }
174
- }
175
- })
176
-
177
- expect(wrapper.vm).toBeDefined()
178
- await waitNT(wrapper.vm)
179
-
180
- const $menu = wrapper.find('.dropdown-menu')
181
- expect($menu.find('div').exists()).toBe(true)
182
- expect($menu.text()).toEqual('foo')
183
-
184
- expect(slotScope).toBeDefined()
185
- expect(slotScope.hide).toBeDefined()
186
-
187
- wrapper.destroy()
188
- })
189
-
190
- it('should only render menu content when visible when "lazy" prop set', async () => {
191
- const wrapper = mount(BNavItemDropdown, {
192
- propsData: {
193
- lazy: true
194
- },
195
- scopedSlots: {
196
- default() {
197
- return this.$createElement('div', 'bar')
198
- }
199
- }
200
- })
201
-
202
- expect(wrapper.vm).toBeDefined()
203
- expect(wrapper.vm.visible).toBe(false)
204
- await waitNT(wrapper.vm)
205
-
206
- const $menu = wrapper.find('.dropdown-menu')
207
- expect($menu.find('div').exists()).toBe(false)
208
-
209
- wrapper.vm.show()
210
- await waitNT(wrapper.vm)
211
- await waitRAF()
212
- expect(wrapper.vm.visible).toBe(true)
213
- expect($menu.find('div').exists()).toBe(true)
214
- expect($menu.text()).toEqual('bar')
215
-
216
- wrapper.vm.hide()
217
- await waitNT(wrapper.vm)
218
- await waitRAF()
219
- expect(wrapper.vm.visible).toBe(false)
220
- expect($menu.find('div').exists()).toBe(false)
221
-
222
- wrapper.destroy()
223
- })
224
-
225
- it('should open/close on toggle click', async () => {
226
- const wrapper = mount(BNavItemDropdown)
227
-
228
- expect(wrapper.vm).toBeDefined()
229
- await waitNT(wrapper.vm)
230
-
231
- const $toggle = wrapper.find('.dropdown-toggle')
232
- expect(wrapper.vm.visible).toBe(false)
233
- expect($toggle.attributes('aria-expanded')).toEqual('false')
234
-
235
- await $toggle.trigger('click')
236
- await waitRAF()
237
- expect(wrapper.vm.visible).toBe(true)
238
- expect($toggle.attributes('aria-expanded')).toEqual('true')
239
-
240
- await $toggle.trigger('click')
241
- await waitRAF()
242
- expect(wrapper.vm.visible).toBe(false)
243
- expect($toggle.attributes('aria-expanded')).toEqual('false')
244
-
245
- wrapper.destroy()
246
- })
247
-
248
- it('should prevent toggle click', async () => {
249
- const wrapper = mount(BNavItemDropdown, {
250
- propsData: {
251
- text: 'toggle'
252
- }
253
- })
254
-
255
- expect(wrapper.vm).toBeDefined()
256
- await waitNT(wrapper.vm)
257
-
258
- const $toggle = wrapper.find('.dropdown-toggle')
259
-
260
- await $toggle.trigger('click')
261
- expect(wrapper.emitted('toggle')).toBeDefined()
262
- expect(wrapper.emitted('toggle').length).toBe(1)
263
- expect(wrapper.emitted('toggle')[0]).toBeDefined()
264
- expect(wrapper.emitted('toggle')[0][0].defaultPrevented).toBe(true)
265
-
266
- wrapper.destroy()
267
- })
268
- })