UNPKG

admin-on-rest-fr05t1k

Version:

A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI

100 lines (91 loc) 4.09 kB
import React from 'react'; import assert from 'assert'; import { shallow } from 'enzyme'; import RadioButtonGroupInput from './RadioButtonGroupInput'; describe('<RadioButtonGroupInput />', () => { const defaultProps = { source: 'foo', meta: {}, input: {}, }; it('should use a mui RadioButtonGroup', () => { const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} label="hello" />); const RadioButtonGroupElement = wrapper.find('RadioButtonGroup'); assert.equal(RadioButtonGroupElement.length, 1); }); it('should use the input parameter value as the initial input value', () => { const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} input={{ value: 2 }} />); const RadioButtonGroupElement = wrapper.find('RadioButtonGroup').first(); assert.equal(RadioButtonGroupElement.prop('defaultSelected'), '2'); }); it('should render choices as mui RadioButton components', () => { const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} choices={[ { id: 'M', name: 'Male' }, { id: 'F', name: 'Female' }, ]} />); const RadioButtonElements = wrapper.find('RadioButton'); assert.equal(RadioButtonElements.length, 2); const RadioButtonElement1 = RadioButtonElements.first(); assert.equal(RadioButtonElement1.prop('value'), 'M'); assert.equal(RadioButtonElement1.prop('label'), 'Male'); const RadioButtonElement2 = RadioButtonElements.at(1); assert.equal(RadioButtonElement2.prop('value'), 'F'); assert.equal(RadioButtonElement2.prop('label'), 'Female'); }); it('should use optionValue as value identifier', () => { const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} optionValue="foobar" choices={[ { foobar: 'M', name: 'Male' }, ]} />); const RadioButtonElements = wrapper.find('RadioButton'); const RadioButtonElement1 = RadioButtonElements.first(); assert.equal(RadioButtonElement1.prop('value'), 'M'); assert.equal(RadioButtonElement1.prop('label'), 'Male'); }); it('should use optionText with a string value as text identifier', () => { const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} optionText="foobar" choices={[ { id: 'M', foobar: 'Male' }, ]} />); const RadioButtonElements = wrapper.find('RadioButton'); const RadioButtonElement1 = RadioButtonElements.first(); assert.equal(RadioButtonElement1.prop('value'), 'M'); assert.equal(RadioButtonElement1.prop('label'), 'Male'); }); it('should use optionText with a function value as text identifier', () => { const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} optionText={choice => choice.foobar} choices={[ { id: 'M', foobar: 'Male' }, ]} />); const RadioButtonElements = wrapper.find('RadioButton'); const RadioButtonElement1 = RadioButtonElements.first(); assert.equal(RadioButtonElement1.prop('value'), 'M'); assert.equal(RadioButtonElement1.prop('label'), 'Male'); }); it('should use optionText with an element value as text identifier', () => { const Foobar = ({ record }) => <span>{record.foobar}</span>; const wrapper = shallow(<RadioButtonGroupInput {...defaultProps} optionText={<Foobar />} choices={[ { id: 'M', foobar: 'Male' }, ]} />); const RadioButtonElements = wrapper.find('RadioButton'); const RadioButtonElement1 = RadioButtonElements.first(); assert.equal(RadioButtonElement1.prop('value'), 'M'); assert.deepEqual(RadioButtonElement1.prop('label'), <Foobar record={{ id: 'M', foobar: 'Male' }} />); }); });