From 2dd02eec757b3363f784e846814c455242f80808 Mon Sep 17 00:00:00 2001 From: tjz <415800467@qq.com> Date: Thu, 28 Jun 2018 21:41:02 +0800 Subject: [PATCH] test: add form test --- components/form/__tests__/index.test.js | 37 +++++++ components/form/__tests__/label.test.js | 139 ++++++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 components/form/__tests__/index.test.js create mode 100644 components/form/__tests__/label.test.js diff --git a/components/form/__tests__/index.test.js b/components/form/__tests__/index.test.js new file mode 100644 index 000000000..dfc53dbdc --- /dev/null +++ b/components/form/__tests__/index.test.js @@ -0,0 +1,37 @@ +import { mount } from '@vue/test-utils' +import Form from '..' + +describe('Form', () => { + it('hideRequiredMark', () => { + const wrapper = mount(Form, { + propsData: { + hideRequiredMark: true, + }, + } + ) + expect(wrapper.classes()).toContain('ant-form-hide-required-mark') + }) + + describe('wrappedComponentRef', () => { + it('get component ref', () => { + const TestForm = { + data () { + return { + __TESTFORM__: true, + } + }, + render () { + return
+ }, + } + const Wrapped = Form.create()(TestForm) + let form + mount(Wrapped, { + propsData: { + wrappedComponentRef: (node) => { form = node }, + }, + }) + expect(form._data.__TESTFORM__).toBe(true) + }) + }) +}) diff --git a/components/form/__tests__/label.test.js b/components/form/__tests__/label.test.js new file mode 100644 index 000000000..42460a8cf --- /dev/null +++ b/components/form/__tests__/label.test.js @@ -0,0 +1,139 @@ +import { mount } from '@vue/test-utils' +import Form from '..' +import { asyncExpect } from '@/tests/utils' + +describe('Form', () => { + it('should remove duplicated user input colon', () => { + const wrapper = mount({ + render () { + return ( + + input + input +
+ ) + }, + }) + expect(wrapper.findAll('.ant-form-item-label label').at(0).text()).not.toContain(':') + expect(wrapper.findAll('.ant-form-item-label label').at(1).text()).not.toContain(':') + }) + + it('should not remove duplicated user input colon when props colon is false', () => { + const wrapper = mount({ + render () { + return ( +
+ input + input +
+ ) + }, + }) + expect(wrapper.findAll('.ant-form-item-label label').at(0).text()).toContain(':') + expect(wrapper.findAll('.ant-form-item-label label').at(1).text()).toContain(':') + }) + + it('should not remove duplicated user input colon when layout is vertical', () => { + const wrapper = mount({ + render () { + return ( +
+ input + input +
+ ) + }, + }) + expect(wrapper.findAll('.ant-form-item-label label').at(0).text()).toContain(':') + expect(wrapper.findAll('.ant-form-item-label label').at(1).text()).toContain(':') + }) + + it('should has dom with .ant-form-item-control-wrapper', () => { + const formItemLayout = { + labelCol: { span: 6 }, + wrapperCol: { span: 14 }, + } + const wrapper = mount({ + render () { + return ( +
+ input + input +
+ ) + }, + }) + expect(wrapper.findAll('.ant-form-item-control-wrapper').length).toBe(2) + expect(wrapper.findAll('.ant-form-item-control-wrapper.ant-col-14').length).toBe(1) + }) + + // https://github.com/ant-design/ant-design/issues/7351 + it('focus correct input when click label', async () => { + const Form1 = Form.create()({ + render () { + return ( +
+ + {this.form.getFieldDecorator('test')()} + +
+ ) + }, + }) + const Form2 = Form.create()({ + render () { + return ( +
+ + {this.form.getFieldDecorator('test2')()} + +
+ ) + }, + }) + + const wrapper = mount({ + render () { + return
+ }, + }, { sync: false }) + await asyncExpect(() => { + wrapper.findAll({ name: 'AForm' }).at(0).findAll('label').at(0).trigger('click') + }) + await asyncExpect(() => { + expect(wrapper.findAll({ name: 'AForm' }).at(0).findAll('input').at(0).element).toBe(document.activeElement) + }) + await asyncExpect(() => { + wrapper.findAll({ name: 'AForm' }).at(1).findAll('label').at(0).trigger('click') + }) + await asyncExpect(() => { + expect(wrapper.findAll({ name: 'AForm' }).at(1).findAll('input').at(0).element).toBe(document.activeElement) + }) + }) + + // https://github.com/ant-design/ant-design/issues/7693 + it('should not throw error when is not a valid id', async () => { + const Form1 = Form.create()({ + render () { + return ( +
+ + {this.form.getFieldDecorator('member[0].name.firstname')()} + +
+ ) + }, + }) + + const wrapper = mount(Form1, { sync: false, attachToDocument: true }) + await asyncExpect(() => { + expect(() => { + wrapper.find({ name: 'AForm' }).findAll('label').at(0).trigger('click') + }).not.toThrow() + }) + // 不合法id时,document.activeElement没有正确更新 + // await asyncExpect(() => { + // expect(wrapper.find({ name: 'AForm' }).findAll('input').at(0).element).toBe(document.activeElement) + // }, 0) + }) +})