diff --git a/src/server/plugins/engine/components/helpers/components.test.ts b/src/server/plugins/engine/components/helpers/components.test.ts index f588e613f..6ee7153c0 100644 --- a/src/server/plugins/engine/components/helpers/components.test.ts +++ b/src/server/plugins/engine/components/helpers/components.test.ts @@ -4,6 +4,7 @@ import { type EastingNorthingFieldComponent, type GeospatialFieldComponent, type LatLongFieldComponent, + type MultilineTextFieldComponent, type NationalGridFieldNumberFieldComponent, type OsGridRefFieldComponent } from '@defra/forms-model' @@ -18,6 +19,7 @@ import { EastingNorthingField, GeospatialField, LatLongField, + MultilineTextField, NationalGridFieldNumberField, OsGridRefField } from '~/src/server/plugins/engine/components/index.js' @@ -442,3 +444,37 @@ describe('Location field formatting', () => { }) }) }) + +describe('MultilineTextField formatting', () => { + let field: MultilineTextField + + beforeEach(() => { + const model = new FormModel(definition, { + basePath: 'test' + }) + + const def: MultilineTextFieldComponent = { + type: ComponentType.MultilineTextField, + name: 'myComponent', + title: 'Your answer', + options: {}, + schema: {} + } + + field = new MultilineTextField(def, { model }) + }) + + it('escapes block quote markers in the check answers summary', () => { + const state = { myComponent: '> first\r\n>\r\n> second' } + + const answer = getAnswer(field, state, translator, { format: 'summary' }) + expect(answer).toBe('> first
>
> second
') + }) + + it('escapes block quote markers in emails', () => { + const state = { myComponent: '> first\r\n>\r\n> second' } + + const answer = getAnswer(field, state, translator, { format: 'email' }) + expect(answer).toBe('\\> first\n\\>\n\\> second\n') + }) +}) diff --git a/src/server/plugins/engine/components/helpers/index.ts b/src/server/plugins/engine/components/helpers/index.ts index 6450118b1..41a01aa5f 100644 --- a/src/server/plugins/engine/components/helpers/index.ts +++ b/src/server/plugins/engine/components/helpers/index.ts @@ -21,6 +21,7 @@ export function escapeMarkdown(answer: string) { '(', ')', '#', + '>', '+', '-', '.',