import { getFormValues, setFormValues } from '../../src'; import * as utils from '../utils' describe('radio', () => { describe('basic', () => { beforeEach(utils.setup(` Radio/Basic
`)) it('should have no form values', () => { utils.test({ actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) const before = utils.makeSearchParams(values) .toString(); const after = utils.makeSearchParams(search) .toString(); expect(values['enabled']) .toBeUndefined(); expect(before) .toEqual(after); }, expectedStaticValue: '', }); }); }); describe('checked', () => { beforeEach(utils.setup(` Radio/Checked
`)) 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: 'enabled=on', }); }); }); describe('duplicate', () => { beforeEach(utils.setup(` Radio/Duplicate
`)); it('should get last value as checked', () => { 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: { enabled: 'hello 2', }, }); }); it('should set to last value', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: ['hello 3', 'hello 4'], }) }, 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: { enabled: 'hello 4', }, }); }); }); describe('setting values', () => { beforeEach(utils.setup(` Radio/Setting Values
`)) it('should uncheck for boolean "true"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: true, }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBeUndefined() }, expectedStaticValue: '', }); }); it('should check for string "true"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'true', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('true'); }, expectedStaticValue: 'enabled=true', }); }); it('should check for string "yes"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'yes', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('yes'); }, expectedStaticValue: 'enabled=yes', }); }); it('should check for string "on"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'on', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('on'); }, expectedStaticValue: 'enabled=on', }); }); it('should uncheck for boolean "false"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: false, }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBeUndefined() }, expectedStaticValue: '', }); }); it('should check for string "false"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'false', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('false'); }, expectedStaticValue: 'enabled=false', }); }); it('should check for string "no"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'no', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('no') }, expectedStaticValue: 'enabled=no', }); }); it('should check for string "off"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'off', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('off'); }, expectedStaticValue: 'enabled=off', }); }); it('should uncheck for number "1"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 1, }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBeUndefined(); }, expectedStaticValue: '', }); }); it('should check for string "1"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: '1', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('1'); }, expectedStaticValue: 'enabled=1', }); }); it('should uncheck for number "0"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 0, }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBeUndefined() }, expectedStaticValue: '', }); }); it('should check for string "0"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: '0', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('0') }, expectedStaticValue: 'enabled=0', }); }); it('should uncheck for object "null"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: null, }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBeUndefined() }, expectedStaticValue: '', }); }); it('should check for string "null"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: 'null', }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('null'); }, expectedStaticValue: 'null', }); }); it('should check for boolean "true"', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: true, }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBeUndefined() }, expectedStaticValue: '', }); }); it('should check valueless radio for last value on', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: ['foo', 'bar', 'baz', 'on'], }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('on') }, expectedStaticValue: 'enabled=on', }); }); it('should check radio with value for last value', () => { utils.test({ onLoaded: (form: HTMLFormElement) => { setFormValues(form, { enabled: ['foo', 'bar', 'baz', 'on', 'default', 'true'], }) }, actionBeforeSubmit: (cy: any) => cy.get('[type="submit"]'), onSubmitted: (form: HTMLFormElement, submitter: any, search: any) => { const values = getFormValues(form, { submitter }) expect(values['enabled']).toBe('true') }, expectedStaticValue: 'enabled=true', }); }); }); });