diff --git a/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/index.test.jsx.snap b/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/index.test.jsx.snap index 9494e0a5e..f3decccae 100644 --- a/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/index.test.jsx.snap +++ b/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/index.test.jsx.snap @@ -15,7 +15,7 @@ exports[`TitleHeader snapshots initialized 1`] = ` className="d-flex flex-row align-items-center" > - TeST LocALtitLE + { if (!isInitialized) { return intl.formatMessage(messages.loading); } const dispatch = useDispatch(); + const title = useSelector(selectors.app.displayTitle); const { inputRef, @@ -46,7 +48,7 @@ export const TitleHeader = ({ return (
- {localTitle} + {title} useState(val), @@ -198,7 +198,10 @@ export const timerCardHooks = (updateSettings) => ({ export const typeRowHooks = ({ answers, + blockTitle, correctAnswerCount, + problemType, + setBlockTitle, typeKey, updateField, updateAnswer, @@ -211,6 +214,9 @@ export const typeRowHooks = ({ }); } } + if (blockTitle === ProblemTypes[problemType].title) { + setBlockTitle(ProblemTypes[typeKey].title); + } updateField({ problemType: typeKey }); }; return { diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/hooks.test.js b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/hooks.test.js index 8f907c4a1..03d3a68c3 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/hooks.test.js +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/hooks.test.js @@ -251,6 +251,9 @@ describe('Problem settings hooks', () => { describe('Type row hooks', () => { test('test onClick', () => { const typekey = 'multiplechoiceresponse'; + const problemType = 'choiceresponse'; + const blockTitle = 'Multi-select'; + const setBlockTitle = jest.fn(); const updateField = jest.fn(); const updateAnswer = jest.fn(); const answers = [{ @@ -263,12 +266,16 @@ describe('Problem settings hooks', () => { }]; output = hooks.typeRowHooks({ answers, + blockTitle, correctAnswerCount: 2, + problemType, + setBlockTitle, typeKey: typekey, updateField, updateAnswer, }); output.onClick(); + expect(setBlockTitle).toHaveBeenCalledWith('Single select'); expect(updateAnswer).toHaveBeenNthCalledWith(1, { ...answers[0], correct: false }); expect(updateAnswer).toHaveBeenNthCalledWith(2, { ...answers[1], correct: false }); expect(updateField).toHaveBeenCalledWith({ problemType: typekey }); diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.jsx index 229363a32..109cb92e2 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.jsx @@ -24,8 +24,10 @@ export const SettingsWidget = ({ problemType, // redux answers, + blockTitle, correctAnswerCount, settings, + setBlockTitle, updateSettings, updateField, updateAnswer, @@ -36,8 +38,10 @@ export const SettingsWidget = ({
@@ -99,8 +103,10 @@ SettingsWidget.propTypes = { title: PropTypes.string, unselectedFeedback: PropTypes.string, })).isRequired, + blockTitle: PropTypes.string.isRequired, correctAnswerCount: PropTypes.number.isRequired, problemType: PropTypes.string.isRequired, + setBlockTitle: PropTypes.func.isRequired, updateAnswer: PropTypes.func.isRequired, updateField: PropTypes.func.isRequired, updateSettings: PropTypes.func.isRequired, @@ -111,10 +117,12 @@ SettingsWidget.propTypes = { const mapStateToProps = (state) => ({ settings: selectors.problem.settings(state), answers: selectors.problem.answers(state), + blockTitle: selectors.app.blockTitle(state), correctAnswerCount: selectors.problem.correctAnswerCount(state), }); export const mapDispatchToProps = { + setBlockTitle: actions.app.setBlockTitle, updateSettings: actions.problem.updateSettings, updateField: actions.problem.updateField, updateAnswer: actions.problem.updateAnswer, diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.test.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.test.jsx index 0150d483e..d2daba09b 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.test.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/index.test.jsx @@ -46,6 +46,12 @@ describe('SettingsWidget', () => { }); }); + describe('mapDispatchToProps', () => { + test('setBlockTitle from actions.app.setBlockTitle', () => { + expect(mapDispatchToProps.setBlockTitle).toEqual(actions.app.setBlockTitle); + }); + }); + describe('mapDispatchToProps', () => { test('updateSettings from actions.problem.updateSettings', () => { expect(mapDispatchToProps.updateSettings).toEqual(actions.problem.updateSettings); @@ -57,4 +63,10 @@ describe('SettingsWidget', () => { expect(mapDispatchToProps.updateField).toEqual(actions.problem.updateField); }); }); + + describe('mapDispatchToProps', () => { + test('updateAnswer from actions.problem.updateAnswer', () => { + expect(mapDispatchToProps.updateAnswer).toEqual(actions.problem.updateAnswer); + }); + }); }); diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.jsx index c73779a04..aa6808196 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.jsx @@ -8,8 +8,10 @@ import TypeRow from './TypeRow'; export const TypeCard = ({ answers, + blockTitle, correctAnswerCount, problemType, + setBlockTitle, updateField, updateAnswer, // inject @@ -27,12 +29,15 @@ export const TypeCard = ({ {problemTypeKeysArray.map((typeKey, i) => ( @@ -49,8 +54,10 @@ TypeCard.propTypes = { title: PropTypes.string, unselectedFeedback: PropTypes.string, })).isRequired, + blockTitle: PropTypes.string.isRequired, correctAnswerCount: PropTypes.number.isRequired, problemType: PropTypes.string.isRequired, + setBlockTitle: PropTypes.func.isRequired, updateField: PropTypes.func.isRequired, updateAnswer: PropTypes.func.isRequired, // injected diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.test.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.test.jsx index d2a2f8518..d22ce280d 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.test.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeCard.test.jsx @@ -7,8 +7,10 @@ import { ProblemTypeKeys } from '../../../../../../data/constants/problem'; describe('TypeCard', () => { const props = { answers: [], + blockTitle: 'BLocktiTLE', correctAnswerCount: 0, problemType: ProblemTypeKeys.TEXTINPUT, + setBlockTitle: jest.fn().mockName('args.setBlockTitle'), updateField: jest.fn().mockName('args.updateField'), updateAnswer: jest.fn().mockName('args.updateAnswer'), // injected diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.jsx index a42f99d05..cc9c44ca8 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.jsx @@ -8,17 +8,23 @@ import Button from '../../../../../../sharedComponents/Button'; export const TypeRow = ({ answers, + blockTitle, correctAnswerCount, typeKey, label, selected, + problemType, lastRow, + setBlockTitle, updateField, updateAnswer, }) => { const { onClick } = typeRowHooks({ answers, + blockTitle, correctAnswerCount, + problemType, + setBlockTitle, typeKey, updateField, updateAnswer, @@ -43,11 +49,14 @@ TypeRow.propTypes = { title: PropTypes.string, unselectedFeedback: PropTypes.string, })).isRequired, + blockTitle: PropTypes.string.isRequired, correctAnswerCount: PropTypes.number.isRequired, typeKey: PropTypes.string.isRequired, label: PropTypes.string.isRequired, selected: PropTypes.bool.isRequired, lastRow: PropTypes.bool.isRequired, + problemType: PropTypes.string.isRequired, + setBlockTitle: PropTypes.func.isRequired, updateAnswer: PropTypes.func.isRequired, updateField: PropTypes.func.isRequired, }; diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.test.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.test.jsx index 2065e57c0..495231ce0 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.test.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/TypeRow.test.jsx @@ -11,11 +11,14 @@ describe('TypeRow', () => { const typeKey = 'TEXTINPUT'; const props = { answers: [], + blockTitle: 'bLoCkTiTLE', correctAnswerCount: 0, typeKey, label: 'Text Input Problem', selected: true, lastRow: false, + problemType: 'prOBlEMtyPE', + setBlockTitle: jest.fn().mockName('args.setBlockTitle'), updateField: jest.fn().mockName('args.updateField'), updateAnswer: jest.fn().mockName('args.updateAnswer'), }; @@ -31,8 +34,11 @@ describe('TypeRow', () => { shallow(); expect(typeRowHooks).toHaveBeenCalledWith({ answers: props.answers, + blockTitle: props.blockTitle, correctAnswerCount: props.correctAnswerCount, + problemType: props.problemType, typeKey, + setBlockTitle: props.setBlockTitle, updateField: props.updateField, updateAnswer: props.updateAnswer, }); diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/__snapshots__/TypeCard.test.jsx.snap b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/__snapshots__/TypeCard.test.jsx.snap index e22a1adad..5e5a13565 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/__snapshots__/TypeCard.test.jsx.snap +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/__snapshots__/TypeCard.test.jsx.snap @@ -9,55 +9,70 @@ exports[`TypeCard snapshot snapshot: renders type setting card 1`] = ` >