From 587caff98019a777ad476b4c29af038c2a6770ff Mon Sep 17 00:00:00 2001 From: Ben Warzeski Date: Tue, 29 Mar 2022 12:02:39 -0400 Subject: [PATCH] Demo (#86) * feat: demo mode * chore: update i18n for demo mode * chore: re-use demo design * fix: update snapshots * chore: add more testing of demo feature --- .../__snapshots__/index.test.jsx.snap | 23 +++++++++++++++++++ src/containers/ReviewModal/index.jsx | 8 +++++-- src/containers/ReviewModal/index.test.jsx | 9 ++++++++ src/containers/ReviewModal/messages.js | 5 ++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/containers/ReviewModal/__snapshots__/index.test.jsx.snap b/src/containers/ReviewModal/__snapshots__/index.test.jsx.snap index 64734f4..fddd413 100644 --- a/src/containers/ReviewModal/__snapshots__/index.test.jsx.snap +++ b/src/containers/ReviewModal/__snapshots__/index.test.jsx.snap @@ -108,3 +108,26 @@ exports[`ReviewModal component component snapshots success 1`] = ` /> `; + +exports[`ReviewModal component component snapshots success, demo (title message) 1`] = ` + + + + + } + className="review-modal" + isOpen={true} + modalBodyClassName="review-modal-body" + onClose={[MockFunction this.onClose]} + title="test-ora-name - Grading Demo" +> + + + +`; diff --git a/src/containers/ReviewModal/index.jsx b/src/containers/ReviewModal/index.jsx index b4c094c..6b61254 100644 --- a/src/containers/ReviewModal/index.jsx +++ b/src/containers/ReviewModal/index.jsx @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { FullscreenModal } from '@edx/paragon'; +import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { selectors, actions, thunkActions } from 'data/redux'; import { RequestKeys } from 'data/constants/requests'; @@ -49,7 +50,7 @@ export class ReviewModal extends React.Component { get title() { let title = this.props.oraName; if (process.env.REACT_APP_NOT_ENABLED) { - title = `${title} - Grading Demo`; + title = `${title} - ${this.props.intl.formatMessage(messages.demoTitleMessage)}`; } return title; } @@ -107,6 +108,9 @@ ReviewModal.defaultProps = { gradingStatus: null, }; ReviewModal.propTypes = { + // injected + intl: intlShape.isRequired, + // redux oraName: PropTypes.string.isRequired, isOpen: PropTypes.bool.isRequired, response: PropTypes.shape({ @@ -135,4 +139,4 @@ export const mapDispatchToProps = { reloadSubmissions: thunkActions.app.initialize, }; -export default connect(mapStateToProps, mapDispatchToProps)(ReviewModal); +export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ReviewModal)); diff --git a/src/containers/ReviewModal/index.test.jsx b/src/containers/ReviewModal/index.test.jsx index 05be1f5..8199d01 100644 --- a/src/containers/ReviewModal/index.test.jsx +++ b/src/containers/ReviewModal/index.test.jsx @@ -1,6 +1,7 @@ import React from 'react'; import { shallow } from 'enzyme'; +import { formatMessage } from 'testUtils'; import { selectors, actions, thunkActions } from 'data/redux'; import { RequestKeys } from 'data/constants/requests'; import { gradingStatuses as statuses } from 'data/services/lms/constants'; @@ -62,6 +63,7 @@ describe('ReviewModal component', () => { isLoaded: false, errorStatus: null, gradingStatus: statuses.ungraded, + intl: { formatMessage }, }; beforeEach(() => { props.setShowReview = jest.fn(); @@ -95,6 +97,13 @@ describe('ReviewModal component', () => { el.setProps({ isOpen: true, isLoaded: true }); expect(render()).toMatchSnapshot(); }); + test('success, demo (title message)', () => { + const oldEnv = process.env; + process.env.REACT_APP_NOT_ENABLED = true; + el.setProps({ isOpen: true, isLoaded: true }); + expect(render()).toMatchSnapshot(); + process.env = oldEnv; + }); }); describe('component', () => { diff --git a/src/containers/ReviewModal/messages.js b/src/containers/ReviewModal/messages.js index 06525a6..91d06e7 100644 --- a/src/containers/ReviewModal/messages.js +++ b/src/containers/ReviewModal/messages.js @@ -7,6 +7,11 @@ const messages = defineMessages({ defaultMessage: 'Loading response', description: 'loading text for submission response review screen', }, + demoTitleMessage: { + id: 'ora-grading.ReviewModal.demoTitleMessage', + defaultMessage: 'Grading Demo', + description: 'message added to modal title, indicating grading demo', + }, }); export default StrictDict(messages);