Skip to content

Commit e2dc4c8

Browse files
authored
Merge pull request #5465 from akolson/fix-undefined-split
Adds defensive check when generating language text in the language dropdown
2 parents c49d767 + da2ae21 commit e2dc4c8

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

contentcuration/contentcuration/frontend/channelEdit/components/edit/DetailsTabView.vue

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@
499499
} from 'shared/constants';
500500
import { constantsTranslationMixin, metadataTranslationMixin } from 'shared/mixins';
501501
import { crossComponentTranslator } from 'shared/i18n';
502+
import { LanguagesNames } from 'shared/leUtils/Languages';
502503
503504
function getValueFromResults(results) {
504505
if (results.length === 0) {
@@ -715,7 +716,17 @@
715716
},
716717
},
717718
role: generateGetterSetter('role_visibility'),
718-
language: generateGetterSetter('language'),
719+
language: {
720+
get() {
721+
const value = this.getValueFromNodes('language');
722+
return value === nonUniqueValue ? LanguagesNames.MUL : value;
723+
},
724+
set(value) {
725+
if (!(value === LanguagesNames.MUL && this.language === LanguagesNames.MUL)) {
726+
this.update({ language: value });
727+
}
728+
},
729+
},
719730
accessibility: generateNestedNodesGetterSetter('accessibility_labels'),
720731
contentLevel: generateNestedNodesGetterSetterObject('grade_levels'),
721732
resourcesNeeded: generateNestedNodesGetterSetterObject('learner_needs'),

contentcuration/contentcuration/frontend/shared/views/__tests__/languageDropdown.spec.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { mount } from '@vue/test-utils';
1+
import { mount, shallowMount } from '@vue/test-utils';
22
import LanguageDropdown from '../LanguageDropdown.vue';
33
import TestForm from './TestForm.vue';
44
import { LanguagesList } from 'shared/leUtils/Languages';
@@ -61,4 +61,24 @@ describe('languageDropdown', () => {
6161
await wrapper.vm.$nextTick();
6262
expect(wrapper.find('.error--text').exists()).toBe(true);
6363
});
64+
65+
it('returns formatted language text when native_name is present', () => {
66+
const wrapper = shallowMount(LanguageDropdown, {
67+
mocks: {
68+
$tr: (key, params) => `${params.language} (${params.code})`,
69+
},
70+
});
71+
const item = { native_name: 'Español,Spanish', id: 'es' };
72+
expect(wrapper.vm.languageText(item)).toBe('Español (es)');
73+
});
74+
75+
it('returns formatted language text when native_name is an empty string', () => {
76+
const wrapper = shallowMount(LanguageDropdown, {
77+
mocks: {
78+
$tr: (key, params) => `${params.language} (${params.code})`,
79+
},
80+
});
81+
const item = { native_name: '', id: 'de' };
82+
expect(wrapper.vm.languageText(item)).toBe(' (de)');
83+
});
6484
});

0 commit comments

Comments
 (0)