diff --git a/src/editors/containers/ProblemEditor/data/OLXParser.js b/src/editors/containers/ProblemEditor/data/OLXParser.js
index 865a14999..de2761735 100644
--- a/src/editors/containers/ProblemEditor/data/OLXParser.js
+++ b/src/editors/containers/ProblemEditor/data/OLXParser.js
@@ -330,8 +330,8 @@ export class OLXParser {
getProblemType() {
const problemKeys = Object.keys(this.problem);
- const intersectedProblems = _.intersection(Object.values(ProblemTypeKeys), problemKeys);
- if (intersectedProblems.length === 0) {
+ const problemTypeKeys = problemKeys.filter(key => Object.values(ProblemTypeKeys).indexOf(key) !== -1);
+ if (problemTypeKeys.length === 0) {
// a blank problem is a problem which contains only `` as it's olx.
// blank problems are not given types, so that a type may be selected.
if (problemKeys.length === 1 && problemKeys[0] === '#text' && this.problem[problemKeys[0]] === '') {
@@ -341,10 +341,14 @@ export class OLXParser {
return ProblemTypeKeys.ADVANCED;
}
// make sure compound problems are treated as advanced
- if (intersectedProblems.length > 1) {
+ // TODO: Find a way to add answers using additional_answers v/s numericalresponse
+ if ((problemTypeKeys.length > 1)
+ || (problemTypeKeys[0] !== ProblemTypeKeys.NUMERIC // multiple numeric problems are really just multiple answers
+ && _.isArray(this.problem[problemTypeKeys[0]])
+ && this.problem[problemTypeKeys[0]].length > 1)) {
return ProblemTypeKeys.ADVANCED;
}
- const problemType = intersectedProblems[0];
+ const problemType = problemTypeKeys[0];
return problemType;
}
diff --git a/src/editors/containers/ProblemEditor/data/OLXParser.test.js b/src/editors/containers/ProblemEditor/data/OLXParser.test.js
index 5823e4b6e..eade6422f 100644
--- a/src/editors/containers/ProblemEditor/data/OLXParser.test.js
+++ b/src/editors/containers/ProblemEditor/data/OLXParser.test.js
@@ -8,6 +8,7 @@ import {
mutlipleChoiceWithFeedbackAndHintsOLX,
textInputWithFeedbackAndHintsOLXWithMultipleAnswers,
advancedProblemOlX,
+ multipleProblemOlX,
blankProblemOLX,
} from './mockData/olxTestData';
import { ProblemTypeKeys } from '../../../data/constants/problem';
@@ -43,6 +44,11 @@ describe('Check OLXParser problem type', () => {
const problemType = olxparser.getProblemType();
expect(problemType).toBe(ProblemTypeKeys.ADVANCED);
});
+ test('Test Advanced Problem Type by multiples', () => {
+ const olxparser = new OLXParser(multipleProblemOlX.rawOLX);
+ const problemType = olxparser.getProblemType();
+ expect(problemType).toBe(ProblemTypeKeys.ADVANCED);
+ });
test('Test Blank Problem Type', () => {
const olxparser = new OLXParser(blankProblemOLX.rawOLX);
const problemType = olxparser.getProblemType();
diff --git a/src/editors/containers/ProblemEditor/data/mockData/olxTestData.js b/src/editors/containers/ProblemEditor/data/mockData/olxTestData.js
index 187ce6514..5cae017f9 100644
--- a/src/editors/containers/ProblemEditor/data/mockData/olxTestData.js
+++ b/src/editors/containers/ProblemEditor/data/mockData/olxTestData.js
@@ -564,6 +564,16 @@ export const advancedProblemOlX = {
`,
};
+export const multipleProblemOlX = {
+ rawOLX: `
+
+
+
+
+
+
+`,
+};
export const blankProblemOLX = {
rawOLX: '',
};