diff --git a/client/src/templates/Challenges/redux/create-question-epic.js b/client/src/templates/Challenges/redux/create-question-epic.js index 93ff05697b2..b037e4301f4 100644 --- a/client/src/templates/Challenges/redux/create-question-epic.js +++ b/client/src/templates/Challenges/redux/create-question-epic.js @@ -38,6 +38,31 @@ function filesToMarkdown(challengeFiles = {}) { }, '\n'); } +export function insertEditableRegions(challengeFiles = []) { + if (challengeFiles?.some(file => file.editableRegionBoundaries?.length > 0)) { + const editableRegionStrings = fileExtension => { + const startComment = fileExtension === 'html' ? '' : '*/'; + return `\n${startComment} User Editable Region ${endComment}\n`; + }; + + const filesWithEditableRegions = challengeFiles.map(file => { + const { contents, editableRegionBoundaries, ext } = file; + if (editableRegionBoundaries.length > 0) { + const comment = editableRegionStrings(ext); + const [start, end] = editableRegionBoundaries; + const lines = contents.split('\n'); + lines.splice(start, 0, comment); + lines.splice(end, 0, comment); + return { ...file, contents: lines.join('\n') }; + } + return file; + }); + return filesWithEditableRegions; + } + return challengeFiles; +} + function createQuestionEpic(action$, state$, { window }) { return action$.pipe( ofType(actionTypes.createQuestion), @@ -50,29 +75,9 @@ function createQuestionEpic(action$, state$, { window }) { block, helpCategory } = challengeMetaSelector(state); - if ( - challengeFiles?.some(file => file.editableRegionBoundaries.length > 0) - ) { - const editableRegionStrings = fileExtension => { - const startComment = fileExtension === 'html' ? '' : '*/'; - return `\n${startComment} User Editable Region ${endComment}\n`; - }; - const filesWithEditableRegions = challengeFiles.map(file => { - const { contents, editableRegionBoundaries, ext } = file; - if (editableRegionBoundaries.length > 0) { - const comment = editableRegionStrings(ext); - const [start, end] = editableRegionBoundaries; - const lines = contents.split('\n'); - lines.splice(start, 0, comment); - lines.splice(end, 0, comment); - return { ...file, contents: lines.join('\n') }; - } - return file; - }); - challengeFiles = filesWithEditableRegions; - } + challengeFiles = insertEditableRegions(challengeFiles); + const { navigator: { userAgent }, location: { pathname, origin } diff --git a/client/src/templates/Challenges/redux/create-question-epic.test.js b/client/src/templates/Challenges/redux/create-question-epic.test.js index 3e211b0fce8..6572b0f1b7c 100644 --- a/client/src/templates/Challenges/redux/create-question-epic.test.js +++ b/client/src/templates/Challenges/redux/create-question-epic.test.js @@ -1,4 +1,5 @@ import { transformEditorLink } from '../utils'; +import { insertEditableRegions } from './create-question-epic'; describe('create-question-epic', () => { describe('transformEditorLink', () => { @@ -27,4 +28,65 @@ describe('create-question-epic', () => { }); }); }); + describe('insertEditableRegions', () => { + const multiCertChallengeFiles = [ + { + contents: '