🌐 AI搜索 & 代理 主页
Skip to content

Commit 0d2b646

Browse files
committed
Update nav-item-dropdown.spec.js
1 parent f784334 commit 0d2b646

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

src/components/nav/nav-item-dropdown.spec.js

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { mount } from '@vue/test-utils'
2-
import { waitNT } from '../../../tests/utils'
2+
import { waitNT, waitRAF } from '../../../tests/utils'
33
import { BNavItemDropdown } from './nav-item-dropdown'
44

55
describe('nav-item-dropdown', () => {
@@ -25,7 +25,7 @@ describe('nav-item-dropdown', () => {
2525
expect($toggle.attributes('role')).toEqual('button')
2626
expect($toggle.attributes('aria-haspopup')).toEqual('true')
2727
expect($toggle.attributes('aria-expanded')).toEqual('false')
28-
expect($toggle.attributes('href')).toEqual(`#${$toggle.attributes('id')}`)
28+
expect($toggle.attributes('href')).toEqual('#')
2929
expect($toggle.classes()).toContain('dropdown-toggle')
3030
expect($toggle.classes()).toContain('nav-link')
3131

@@ -38,7 +38,7 @@ describe('nav-item-dropdown', () => {
3838
wrapper.destroy()
3939
})
4040

41-
it('should flag that we are in a nav', async () => {
41+
it('should have a flag that we are in a nav', async () => {
4242
const wrapper = mount(BNavItemDropdown, {
4343
propsData: {
4444
text: 'toggle'
@@ -51,7 +51,7 @@ describe('nav-item-dropdown', () => {
5151
wrapper.destroy()
5252
})
5353

54-
it('should have custom toggle class in nav-item-dropdown', async () => {
54+
it('should have custom toggle class when "toggle-class" prop set', async () => {
5555
const wrapper = mount(BNavItemDropdown, {
5656
propsData: {
5757
text: 'toggle',
@@ -60,20 +60,15 @@ describe('nav-item-dropdown', () => {
6060
})
6161

6262
expect(wrapper.vm).toBeDefined()
63-
6463
await waitNT(wrapper.vm)
6564

6665
const $toggle = wrapper.find('.dropdown-toggle')
67-
expect($toggle.element.tagName).toBe('A')
68-
expect($toggle.attributes('href')).toEqual(`#${$toggle.attributes('id')}`)
69-
expect($toggle.classes()).toContain('nav-link')
70-
expect($toggle.classes()).toContain('dropdown-toggle')
7166
expect($toggle.classes()).toContain('nav-link-custom')
7267

7368
wrapper.destroy()
7469
})
7570

76-
it('should be disabled when disabled prop set', async () => {
71+
it('should be disabled when "disabled" prop set', async () => {
7772
const wrapper = mount(BNavItemDropdown, {
7873
propsData: {
7974
text: 'toggle',
@@ -82,38 +77,53 @@ describe('nav-item-dropdown', () => {
8277
})
8378

8479
expect(wrapper.vm).toBeDefined()
85-
8680
await waitNT(wrapper.vm)
8781

8882
const $toggle = wrapper.find('.dropdown-toggle')
89-
expect($toggle.element.tagName).toBe('A')
90-
expect($toggle.attributes('role')).toEqual('button')
91-
expect($toggle.attributes('href')).toEqual(`#${$toggle.attributes('id')}`)
92-
expect($toggle.classes()).toContain('nav-link')
93-
expect($toggle.classes()).toContain('dropdown-toggle')
9483
expect($toggle.classes()).toContain('disabled')
9584
expect($toggle.attributes('aria-disabled')).toBeDefined()
9685

9786
wrapper.destroy()
9887
})
9988

100-
it('should prevent click when custom href is set', async () => {
89+
it('should open/close on toggle click', async () => {
10190
const wrapper = mount(BNavItemDropdown, {
10291
propsData: {
103-
text: 'toggle',
104-
href: '/foobar'
92+
text: 'toggle'
10593
}
10694
})
10795

10896
expect(wrapper.vm).toBeDefined()
97+
await waitNT(wrapper.vm)
98+
99+
const $toggle = wrapper.find('.dropdown-toggle')
100+
expect(wrapper.vm.visible).toBe(false)
101+
expect($toggle.attributes('aria-expanded')).toEqual('false')
102+
103+
await $toggle.trigger('click')
104+
await waitRAF()
105+
expect(wrapper.vm.visible).toBe(true)
106+
expect($toggle.attributes('aria-expanded')).toEqual('true')
109107

108+
await $toggle.trigger('click')
109+
await waitRAF()
110+
expect(wrapper.vm.visible).toBe(false)
111+
expect($toggle.attributes('aria-expanded')).toEqual('false')
112+
113+
wrapper.destroy()
114+
})
115+
116+
it('should prevent toggle click', async () => {
117+
const wrapper = mount(BNavItemDropdown, {
118+
propsData: {
119+
text: 'toggle'
120+
}
121+
})
122+
123+
expect(wrapper.vm).toBeDefined()
110124
await waitNT(wrapper.vm)
111125

112126
const $toggle = wrapper.find('.dropdown-toggle')
113-
expect($toggle.element.tagName).toBe('A')
114-
expect($toggle.attributes('href')).toEqual('/foobar')
115-
expect($toggle.classes()).toContain('nav-link')
116-
expect($toggle.classes()).toContain('dropdown-toggle')
117127

118128
await $toggle.trigger('click')
119129
expect(wrapper.emitted('toggle')).toBeDefined()

0 commit comments

Comments
 (0)