diff --git a/src/components/GradesTab/ScoreViewInput.jsx b/src/components/GradesTab/ScoreViewInput.jsx index e3638aa..363e57a 100644 --- a/src/components/GradesTab/ScoreViewInput.jsx +++ b/src/components/GradesTab/ScoreViewInput.jsx @@ -5,17 +5,18 @@ import { connect } from 'react-redux'; import { FormControl, FormGroup, FormLabel } from '@edx/paragon'; import actions from 'data/actions'; +import selectors from 'data/selectors'; /** * * redux-connected select control for grade format (percent vs absolute) */ -export const ScoreViewInput = ({ toggleFormat }) => ( +export const ScoreViewInput = ({ format, toggleFormat }) => ( Score View: @@ -24,9 +25,14 @@ export const ScoreViewInput = ({ toggleFormat }) => ( ); ScoreViewInput.propTypes = { + format: PropTypes.string.isRequired, toggleFormat: PropTypes.func.isRequired, }; +export const mapStateToProps = (state) => ({ + format: selectors.grades.gradeFormat(state), +}); + export const mapDispatchToProps = { toggleFormat: actions.grades.toggleGradeFormat, }; diff --git a/src/components/GradesTab/ScoreViewInput.test.jsx b/src/components/GradesTab/ScoreViewInput.test.jsx index de22ecf..15083db 100644 --- a/src/components/GradesTab/ScoreViewInput.test.jsx +++ b/src/components/GradesTab/ScoreViewInput.test.jsx @@ -2,8 +2,13 @@ import React from 'react'; import { shallow } from 'enzyme'; import actions from 'data/actions'; +import selectors from 'data/selectors'; -import { ScoreViewInput, mapDispatchToProps } from './ScoreViewInput'; +import { + ScoreViewInput, + mapDispatchToProps, + mapStateToProps, +} from './ScoreViewInput'; jest.mock('@edx/paragon', () => ({ FormControl: () => 'FormControl', @@ -17,13 +22,19 @@ jest.mock('data/actions', () => ({ grades: { toggleGradeFormat: jest.fn() }, }, })); +jest.mock('data/selectors', () => ({ + __esModule: true, + default: { + grades: { gradeFormat: (state) => ({ gradeFormat: state }) }, + }, +})); describe('ScoreViewInput', () => { describe('component', () => { - let props; + const props = { format: 'percent' }; let el; beforeEach(() => { - props = { toggleFormat: jest.fn() }; + props.toggleFormat = jest.fn(); el = shallow(); }); const assertions = [ @@ -34,6 +45,12 @@ describe('ScoreViewInput', () => { expect(el).toMatchSnapshot(); }); }); + describe('mapStateToProps', () => { + test('format from grades.gradeFormat', () => { + const testState = { some: 'state' }; + expect(mapStateToProps(testState).format).toEqual(selectors.grades.gradeFormat(testState)); + }); + }); describe('mapDispatchToProps', () => { test('toggleFormat from actions.grades.toggleGradeFormat', () => { expect(mapDispatchToProps.toggleFormat).toEqual(actions.grades.toggleGradeFormat);