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',
});
});
});
});