import { getFormValues, setFormValues } from '../../src'; import * as utils from '../utils' describe('select', () => { describe('multiple', () => { beforeEach(utils.setup(` Select/Multiple
`)) it('should have multiple form values on a single field', () => { utils.test({ actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Bar&hello=Quux' }); }); it('should set values correctly', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { hello: ['Foo', 'Baz'] }); }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Foo&hello=Baz' }); }); }) describe('multiple duplicate', () => { beforeEach(utils.setup(` Select/Multiple Duplicate
`)) it('should have multiple form values on a single field', () => { utils.test({ actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Bar&hello=Quux&hello=Mango&hello=Ube' }); }); it('should set multiple form values across all selects', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { hello: ['Foo', 'Baz', 'Chocolate', 'Vanilla'] }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Foo&hello=Baz&hello=Chocolate&hello=Vanilla' }); }); it('should set multiple form values on each corresponding select element', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { hello: [['Foo', 'Baz', 'Chocolate'], ['Vanilla']] }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Foo&hello=Baz&hello=Vanilla' }); }); }) describe('single', () => { beforeEach(utils.setup(` Select/Single
`)) it('should have single form value on a single field', () => { utils.test({ actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: { hello: 'Baz', } }); }); }) describe('single duplicate', () => { beforeEach(utils.setup(` Select/Single Duplicate
`)) it('should have multiple form values on a single field', () => { utils.test({ actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Bar&hello=Ube' }); }); it('should set multiple form values across all selects', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { hello: ['Foo', 'Chocolate'] }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Foo&hello=Chocolate' }); }); it('should set multiple form values on each corresponding select element', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { hello: ['Foo', 'Ube'] }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const before = utils.makeSearchParams(getFormValues(form, { submitter })) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(before) .toEqual(after); }, expectedStaticValue: 'hello=Foo&hello=Ube' }); }); }) })