import { mount } from '@vue/test-utils' import WdPasswordInput from '../../src/uni_modules/wot-design-uni/components/wd-password-input/wd-password-input.vue' import { describe, expect, test } from 'vitest' describe('WdPasswordInput', () => { test('基本渲染', () => { const wrapper = mount(WdPasswordInput) expect(wrapper.classes()).toContain('wd-password-input') }) test('密码长度', () => { const wrapper = mount(WdPasswordInput, { props: { length: 6, modelValue: '123' } }) const items = wrapper.findAll('.wd-password-input__item') expect(items.length).toBe(6) expect(items[0].find('.wd-password-input__mask').exists()).toBeTruthy() expect(items[1].find('.wd-password-input__mask').exists()).toBeTruthy() expect(items[2].find('.wd-password-input__mask').exists()).toBeTruthy() expect(items[3].find('.wd-password-input__mask').exists()).toBeFalsy() }) test('明文显示', () => { const wrapper = mount(WdPasswordInput, { props: { modelValue: '123', mask: false } }) const items = wrapper.findAll('.wd-password-input__item') expect(items[0].text()).toBe('1') expect(items[1].text()).toBe('2') expect(items[2].text()).toBe('3') }) test('获取焦点', () => { const wrapper = mount(WdPasswordInput, { props: { focused: true } }) expect(wrapper.find('.wd-password-input__cursor').exists()).toBeTruthy() }) test('自定义样式', () => { const wrapper = mount(WdPasswordInput, { props: { customClass: 'custom-password', customStyle: 'background: red;' } }) expect(wrapper.classes()).toContain('custom-password') expect(wrapper.attributes('style')).toBe('background: red;') }) test('点击事件', async () => { const wrapper = mount(WdPasswordInput) await wrapper.find('.wd-password-input__security').trigger('touchstart') const emitted = wrapper.emitted() as Record expect(emitted['focus']).toBeTruthy() }) test('完成事件', () => { const wrapper = mount(WdPasswordInput, { props: { modelValue: '123456', length: 6 } }) // 在组件中应该有一个 watch 监听 modelValue 长度等于 length 时触发 complete 事件 // 但在当前组件实现中似乎没有这个功能,这个测试可能需要修改 // 这里只是示例,实际应该根据组件实现来编写测试 // const emitted = wrapper.emitted() as Record // expect(emitted['complete']).toBeTruthy() // expect(emitted['complete'][0][0]).toBe('123456') }) })