chore: fix translation for verified student only logic
This commit is contained in:
@@ -3,3 +3,5 @@ dist/
|
|||||||
packages/
|
packages/
|
||||||
node_modules/
|
node_modules/
|
||||||
jest.config.js
|
jest.config.js
|
||||||
|
env.config.jsx
|
||||||
|
example.env.config.jsx
|
||||||
|
|||||||
@@ -8,19 +8,23 @@ import { fetchTranslationConfig } from './data/api';
|
|||||||
|
|
||||||
const UnitTranslationPlugin = ({ id, courseId, unitId }) => {
|
const UnitTranslationPlugin = ({ id, courseId, unitId }) => {
|
||||||
const { language } = useModel('coursewareMeta', courseId);
|
const { language } = useModel('coursewareMeta', courseId);
|
||||||
const { verifiedMode } = useModel('courseHomeMeta', courseId);
|
const { enrollmentMode } = useModel('courseHomeMeta', courseId);
|
||||||
const [translationConfig, setTranslationConfig] = useState({
|
const [translationConfig, setTranslationConfig] = useState({
|
||||||
enabled: false,
|
enabled: false,
|
||||||
availableLanguages: [],
|
availableLanguages: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const verifiedMode = enrollmentMode === 'verified';
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchTranslationConfig(courseId).then(setTranslationConfig);
|
if (verifiedMode) {
|
||||||
|
fetchTranslationConfig(courseId).then(setTranslationConfig);
|
||||||
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const { enabled, availableLanguages } = translationConfig;
|
const { enabled, availableLanguages } = translationConfig;
|
||||||
|
|
||||||
if (!enabled || !language || !availableLanguages.length || !verifiedMode) {
|
if (!verifiedMode || !enabled || !language || !availableLanguages.length) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,12 +25,17 @@ describe('<UnitTranslationPlugin />', () => {
|
|||||||
const mockInitialState = ({ enabled = true, availableLanguages = ['en'] }) => {
|
const mockInitialState = ({ enabled = true, availableLanguages = ['en'] }) => {
|
||||||
useState.mockReturnValue([{ enabled, availableLanguages }, jest.fn()]);
|
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', () => {
|
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 });
|
mockInitialState({ enabled: false });
|
||||||
|
|
||||||
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
||||||
@@ -38,11 +43,6 @@ describe('<UnitTranslationPlugin />', () => {
|
|||||||
expect(wrapper.isEmptyRender()).toBe(true);
|
expect(wrapper.isEmptyRender()).toBe(true);
|
||||||
});
|
});
|
||||||
it('render empty when available languages is empty', () => {
|
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({
|
mockInitialState({
|
||||||
availableLanguages: [],
|
availableLanguages: [],
|
||||||
});
|
});
|
||||||
@@ -55,9 +55,7 @@ describe('<UnitTranslationPlugin />', () => {
|
|||||||
it('render empty when course language has not been set', () => {
|
it('render empty when course language has not been set', () => {
|
||||||
when(useModel)
|
when(useModel)
|
||||||
.calledWith('coursewareMeta', props.courseId)
|
.calledWith('coursewareMeta', props.courseId)
|
||||||
.mockReturnValueOnce({ language: undefined })
|
.mockReturnValueOnce({ language: null });
|
||||||
.calledWith('courseHomeMeta', props.courseId)
|
|
||||||
.mockReturnValueOnce({ verifiedMode: { accessExpirationDate: null } });
|
|
||||||
mockInitialState({});
|
mockInitialState({});
|
||||||
|
|
||||||
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
||||||
@@ -65,12 +63,10 @@ describe('<UnitTranslationPlugin />', () => {
|
|||||||
expect(wrapper.isEmptyRender()).toBe(true);
|
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)
|
when(useModel)
|
||||||
.calledWith('coursewareMeta', props.courseId)
|
|
||||||
.mockReturnValueOnce({ language: 'en' })
|
|
||||||
.calledWith('courseHomeMeta', props.courseId)
|
.calledWith('courseHomeMeta', props.courseId)
|
||||||
.mockReturnValueOnce({ verifiedMode: null });
|
.mockReturnValueOnce({ enrollmentMode: 'audit' });
|
||||||
mockInitialState({});
|
mockInitialState({});
|
||||||
|
|
||||||
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
||||||
@@ -79,11 +75,6 @@ describe('<UnitTranslationPlugin />', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('render TranslationSelection when translation is enabled and language is available', () => {
|
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({});
|
mockInitialState({});
|
||||||
|
|
||||||
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
const wrapper = shallow(<UnitTranslationPlugin {...props} />);
|
||||||
|
|||||||
Reference in New Issue
Block a user