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)
+ })
+})