From 78e5c57bd39e442893af2b13c921bdc6f507b995 Mon Sep 17 00:00:00 2001
From: Leangseu Kim <83240113+leangseu-edx@users.noreply.github.com>
Date: Fri, 12 Apr 2024 14:12:40 -0400
Subject: [PATCH] chore: fix translation for verified student only logic
---
.eslintignore | 2 ++
plugins/UnitTranslationPlugin/index.jsx | 10 ++++--
plugins/UnitTranslationPlugin/index.test.jsx | 35 ++++++++------------
3 files changed, 22 insertions(+), 25 deletions(-)
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();