1
0

slot.test.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { Form } from '../../index';
  2. import { noop } from 'lodash';
  3. import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
  4. const Slot = Form.Slot;
  5. function getSlot(slotProps, formProps = {}) {
  6. return mount(
  7. <Form {...formProps}>
  8. <Slot {...slotProps}></Slot>
  9. </Form>
  10. );
  11. }
  12. describe('Form-slot', () => {
  13. it('className & style', () => {
  14. let props = {
  15. className: 'slot-test',
  16. style: {
  17. color: 'red',
  18. },
  19. };
  20. const slot = getSlot(props).find(`.${BASE_CLASS_PREFIX}-form-slot`);
  21. expect(slot.exists('.slot-test')).toEqual(true);
  22. expect(slot.find(`.${BASE_CLASS_PREFIX}-form-slot`)).toHaveStyle('color', 'red');
  23. });
  24. it('label - objLabel, stringLabel, numberLabel, reactNodeLabel', () => {
  25. let objProps = {
  26. label: {
  27. required: true,
  28. text: 'semi',
  29. },
  30. };
  31. const objLabel = getSlot(objProps).find(`.semi-form-field-label-text`).text();
  32. expect(objLabel).toEqual('semi');
  33. let stringProps = { label: 'semi' };
  34. const stringLabel = getSlot(stringProps).find(`.semi-form-field-label-text`).text();
  35. expect(stringLabel).toEqual('semi');
  36. let numberProps = { label: 888 };
  37. const numberLabel = getSlot(numberProps).find(`.semi-form-field-label-text`).text();
  38. expect(numberLabel).toEqual('888');
  39. let reactNodeLabel = { label: <div>hahaha</div> };
  40. const modeLabel = getSlot(reactNodeLabel).find(`.semi-form-field-label-text div`).text();
  41. expect(modeLabel).toEqual('hahaha');
  42. });
  43. it('error - objError, stringError, numberError, reactNodeError', () => {
  44. let objProps = {
  45. error: {
  46. error: 'semi',
  47. },
  48. };
  49. const objError = getSlot(objProps).find(`.semi-form-field-error-message span`).text();
  50. expect(objError).toEqual('semi');
  51. let stringProps = { error: 'semi' };
  52. const stringError = getSlot(stringProps).find(`.semi-form-field-error-message span`).text();
  53. expect(stringError).toEqual('semi');
  54. let numerProps = { error: 888 };
  55. const numerError = getSlot(numerProps).find(`.semi-form-field-error-message`).text();
  56. expect(numerError).toEqual('');
  57. let reactNodeLabel = { error: <div>hahaha</div> };
  58. const modeLabel = getSlot(reactNodeLabel).find(`.semi-form-field-error-message div`).text();
  59. expect(modeLabel).toEqual('hahaha');
  60. });
  61. it('children', () => {
  62. let children = <div className="slot-child">semi</div>;
  63. let props = {
  64. children: children,
  65. };
  66. const slot = getSlot(props).find(`.${BASE_CLASS_PREFIX}-form-slot`);
  67. expect(slot.contains(children)).toEqual(true);
  68. });
  69. it('extends Form.labelWidth, Form.labelPosition ', () => {
  70. let formProps = {
  71. labelWidth: 200,
  72. labelPosition: 'left',
  73. };
  74. let props = {};
  75. const form = getSlot(props, formProps);
  76. expect(form.exists(`.${BASE_CLASS_PREFIX}-form-field-label-left`)).toEqual(true);
  77. expect(form.find(`.${BASE_CLASS_PREFIX}-form-slot .${BASE_CLASS_PREFIX}-form-field-label`)).toHaveStyle('width', 200);
  78. });
  79. // TODO wrapperCol
  80. // it('extends Form.wrapperCol / Form.labelCol', () => {
  81. // let props = {};
  82. // let formProps = {
  83. // wrapperCol: { span: 20 },
  84. // labelCol: { span: 2 },
  85. // };
  86. // const formContent = (
  87. // <Form {...formProps}>
  88. // <Slot {...slotProps}></Slot>
  89. // </Form>
  90. // );
  91. // const form = mount(formContent, { attachTo: document.getElementById('container') });
  92. // debugger;
  93. // });
  94. });