chore: fix translation for verified student only logic

This commit is contained in:
Leangseu Kim
2024-04-12 14:12:40 -04:00
parent 108636761c
commit 78e5c57bd3
3 changed files with 22 additions and 25 deletions

View File

@@ -3,3 +3,5 @@ dist/
packages/ packages/
node_modules/ node_modules/
jest.config.js jest.config.js
env.config.jsx
example.env.config.jsx

View File

@@ -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;
} }

View File

@@ -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} />);