formField.spec.jsx 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import TextField from 'app/views/settings/components/forms/textField';
  4. import Form from 'app/views/settings/components/forms/form';
  5. import FormModel from 'app/views/settings/components/forms/model';
  6. describe('FormField + model', function() {
  7. let model;
  8. let wrapper;
  9. const routerContext = TestStubs.routerContext();
  10. beforeEach(function() {
  11. model = new FormModel();
  12. });
  13. it('renders with Form', function() {
  14. wrapper = mount(
  15. <Form model={model}>
  16. <TextField name="fieldName" />
  17. </Form>,
  18. routerContext
  19. );
  20. expect(wrapper).toMatchSnapshot();
  21. });
  22. it('sets initial data in model', function() {
  23. wrapper = mount(
  24. <Form model={model} initialData={{fieldName: 'test'}}>
  25. <TextField name="fieldName" />
  26. </Form>,
  27. routerContext
  28. );
  29. expect(model.initialData.fieldName).toBe('test');
  30. });
  31. it('has `defaultValue` from field', function() {
  32. wrapper = mount(
  33. <Form model={model}>
  34. <TextField name="fieldName" defaultValue="foo" />
  35. </Form>,
  36. routerContext
  37. );
  38. expect(model.initialData.fieldName).toBe('foo');
  39. expect(model.fields.get('fieldName')).toBe('foo');
  40. });
  41. it('does not use `defaultValue` when there is initial data', function() {
  42. wrapper = mount(
  43. <Form model={model} initialData={{fieldName: 'test'}}>
  44. <TextField name="fieldName" defaultValue="foo" />
  45. </Form>,
  46. routerContext
  47. );
  48. expect(model.initialData.fieldName).toBe('test');
  49. expect(model.fields.get('fieldName')).toBe('test');
  50. });
  51. it('transforms `defaultValue` from field with `setValue`', function() {
  52. wrapper = mount(
  53. <Form model={model}>
  54. <TextField name="fieldName" defaultValue="foo" setValue={v => `${v}${v}`} />
  55. </Form>,
  56. routerContext
  57. );
  58. expect(model.initialData.fieldName).toBe('foofoo');
  59. expect(model.fields.get('fieldName')).toBe('foofoo');
  60. });
  61. it('sets field descriptor in model', function() {
  62. wrapper = mount(
  63. <Form model={model} initialData={{fieldName: 'test'}}>
  64. <TextField name="fieldName" required />
  65. </Form>,
  66. routerContext
  67. );
  68. expect(model.getDescriptor('fieldName', 'required')).toBe(true);
  69. });
  70. it('removes field descriptor in model on unmount', function() {
  71. wrapper = mount(
  72. <Form model={model} initialData={{fieldName: 'test'}}>
  73. <TextField name="fieldName" required />
  74. </Form>,
  75. routerContext
  76. );
  77. expect(model.fieldDescriptor.has('fieldName')).toBe(true);
  78. wrapper.unmount();
  79. expect(model.fieldDescriptor.has('fieldName')).toBe(false);
  80. });
  81. });