group.test.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { Form } from '../../index';
  2. function getFormGroup(props = {}) {
  3. let {
  4. inputGroupProps = {},
  5. fieldAProps = {},
  6. fieldBProps = {},
  7. formProps = {},
  8. } = props;
  9. return mount(<Form {...formProps}>
  10. <Form.InputGroup {...inputGroupProps}>
  11. <Form.Input field='a' {...fieldAProps}></Form.Input>
  12. <Form.Input field='b' {...fieldBProps}></Form.Input>
  13. </Form.InputGroup>
  14. </Form>);
  15. }
  16. describe('Form-group', () => {
  17. it('error aggregation', () => {
  18. let errorA = 'fieldAError';
  19. let errorB = 'fieldBError';
  20. let props = {
  21. fieldAProps: {
  22. validate: () => errorA,
  23. trigger: 'mount'
  24. },
  25. fieldBProps: {
  26. validate: () => errorB,
  27. trigger: 'mount'
  28. }
  29. };
  30. let form = getFormGroup(props);
  31. let errors = form.find('.semi-form-field-error-message span');
  32. expect(errors.at(1).text()).toEqual(`${errorA}, ${errorB}`);
  33. });
  34. it('label-string', () => {
  35. let props = {
  36. fieldAProps: { },
  37. fieldBProps: { },
  38. inputGroupProps: {
  39. label: 'semi'
  40. }
  41. };
  42. let form = getFormGroup(props);
  43. let labelText = form.find('.semi-form-field-label-text').text();
  44. expect(labelText).toEqual('semi');
  45. });
  46. it('label-object', () => {
  47. let props = {
  48. fieldAProps: { },
  49. fieldBProps: { },
  50. inputGroupProps: {
  51. label: {
  52. text: <span>semi</span>,
  53. required: true
  54. }
  55. }
  56. };
  57. let form = getFormGroup(props);
  58. expect(form.find('.semi-form-field-label-text').text()).toEqual('semi');
  59. });
  60. it('labelPosition', () => {
  61. let props = {
  62. fieldAProps: { },
  63. fieldBProps: { },
  64. inputGroupProps: {
  65. label: 'semi',
  66. labelPosition: 'left'
  67. }
  68. };
  69. let form = getFormGroup(props);
  70. expect(form.exists('.semi-form-field-label-left')).toEqual(true);
  71. });
  72. it('children', () => {
  73. let props = {
  74. fieldAProps: {
  75. },
  76. }
  77. let form = getFormGroup();
  78. // exist field a\b and theirs label are hidden
  79. expect(form.exists('.semi-input-group .semi-form-field-label')).toEqual(false);
  80. });
  81. it('decleare labelPosition, labelWidth via form props', () => {
  82. let props = {
  83. formProps: {
  84. labelPosition: 'left',
  85. labelWidth: 300
  86. },
  87. inputGroupProps: {
  88. label: {
  89. text: 'semi'
  90. }
  91. }
  92. };
  93. let form = getFormGroup(props);
  94. expect(form.exists('.semi-form-field-label-left')).toEqual(true);
  95. expect(form.find('.semi-form-field-label')).toHaveStyle('width', 300);
  96. });
  97. });