diff --git a/.eslintignore b/.eslintignore index 8fdc5f0c..5127eb81 100755 --- a/.eslintignore +++ b/.eslintignore @@ -3,3 +3,5 @@ dist/ packages/ node_modules/ jest.config.js +env.config.jsx +example.env.config.jsx diff --git a/plugins/UnitTranslationPlugin/index.jsx b/plugins/UnitTranslationPlugin/index.jsx index 5085eabd..038865eb 100644 --- a/plugins/UnitTranslationPlugin/index.jsx +++ b/plugins/UnitTranslationPlugin/index.jsx @@ -8,19 +8,23 @@ import { fetchTranslationConfig } from './data/api'; const UnitTranslationPlugin = ({ id, courseId, unitId }) => { const { language } = useModel('coursewareMeta', courseId); - const { verifiedMode } = useModel('courseHomeMeta', courseId); + const { enrollmentMode } = useModel('courseHomeMeta', courseId); const [translationConfig, setTranslationConfig] = useState({ enabled: false, availableLanguages: [], }); + const verifiedMode = enrollmentMode === 'verified'; + useEffect(() => { - fetchTranslationConfig(courseId).then(setTranslationConfig); + if (verifiedMode) { + fetchTranslationConfig(courseId).then(setTranslationConfig); + } }, []); const { enabled, availableLanguages } = translationConfig; - if (!enabled || !language || !availableLanguages.length || !verifiedMode) { + if (!verifiedMode || !enabled || !language || !availableLanguages.length) { return null; } diff --git a/plugins/UnitTranslationPlugin/index.test.jsx b/plugins/UnitTranslationPlugin/index.test.jsx index 9eaf5a4b..9a7c7b1a 100644 --- a/plugins/UnitTranslationPlugin/index.test.jsx +++ b/plugins/UnitTranslationPlugin/index.test.jsx @@ -25,12 +25,17 @@ describe('', () => { const mockInitialState = ({ enabled = true, availableLanguages = ['en'] }) => { useState.mockReturnValue([{ enabled, availableLanguages }, jest.fn()]); }; + when(useModel) + .calledWith('coursewareMeta', props.courseId) + .mockReturnValue({ language: 'en' }) + .calledWith('courseHomeMeta', props.courseId) + .mockReturnValue({ enrollmentMode: 'verified' }); + + beforeEach(() => { + jest.clearAllMocks(); + }); + it('render empty when translation is not enabled', () => { - when(useModel) - .calledWith('coursewareMeta', props.courseId) - .mockReturnValueOnce({ language: 'en' }) - .calledWith('courseHomeMeta', props.courseId) - .mockReturnValueOnce({ verifiedMode: { accessExpirationDate: null } }); mockInitialState({ enabled: false }); const wrapper = shallow(); @@ -38,11 +43,6 @@ describe('', () => { expect(wrapper.isEmptyRender()).toBe(true); }); it('render empty when available languages is empty', () => { - when(useModel) - .calledWith('coursewareMeta', props.courseId) - .mockReturnValueOnce({ language: 'fr' }) - .calledWith('courseHomeMeta', props.courseId) - .mockReturnValueOnce({ verifiedMode: { accessExpirationDate: null } }); mockInitialState({ availableLanguages: [], }); @@ -55,9 +55,7 @@ describe('', () => { it('render empty when course language has not been set', () => { when(useModel) .calledWith('coursewareMeta', props.courseId) - .mockReturnValueOnce({ language: undefined }) - .calledWith('courseHomeMeta', props.courseId) - .mockReturnValueOnce({ verifiedMode: { accessExpirationDate: null } }); + .mockReturnValueOnce({ language: null }); mockInitialState({}); const wrapper = shallow(); @@ -65,12 +63,10 @@ describe('', () => { expect(wrapper.isEmptyRender()).toBe(true); }); - it('render empty when verifiedMode has not been set', () => { + it('render empty when student is enroll as verified', () => { when(useModel) - .calledWith('coursewareMeta', props.courseId) - .mockReturnValueOnce({ language: 'en' }) .calledWith('courseHomeMeta', props.courseId) - .mockReturnValueOnce({ verifiedMode: null }); + .mockReturnValueOnce({ enrollmentMode: 'audit' }); mockInitialState({}); const wrapper = shallow(); @@ -79,11 +75,6 @@ describe('', () => { }); it('render TranslationSelection when translation is enabled and language is available', () => { - when(useModel) - .calledWith('coursewareMeta', props.courseId) - .mockReturnValueOnce({ language: 'en' }) - .calledWith('courseHomeMeta', props.courseId) - .mockReturnValueOnce({ verifiedMode: { accessExpirationDate: null } }); mockInitialState({}); const wrapper = shallow();