@defra/forms-engine-plugin 4.5.0 → 4.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.server/config/index.js +1 -1
- package/.server/config/index.js.map +1 -1
- package/.server/server/constants.d.ts +1 -0
- package/.server/server/constants.js +1 -0
- package/.server/server/constants.js.map +1 -1
- package/.server/server/plugins/engine/beta/form-context.d.ts +0 -1
- package/.server/server/plugins/engine/beta/form-context.js +4 -3
- package/.server/server/plugins/engine/beta/form-context.js.map +1 -1
- package/.server/server/plugins/engine/components/FileUploadField.js +2 -0
- package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
- package/.server/server/plugins/engine/helpers.d.ts +10 -8
- package/.server/server/plugins/engine/helpers.js +8 -23
- package/.server/server/plugins/engine/helpers.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +2 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
- package/.server/server/plugins/engine/routes/questions.js +2 -1
- package/.server/server/plugins/engine/routes/questions.js.map +1 -1
- package/.server/server/plugins/nunjucks/context.js +1 -2
- package/.server/server/plugins/nunjucks/context.js.map +1 -1
- package/.server/server/plugins/nunjucks/context.test.js +0 -36
- package/.server/server/plugins/nunjucks/context.test.js.map +1 -1
- package/package.json +3 -3
- package/src/config/index.ts +1 -1
- package/src/server/constants.js +1 -0
- package/src/server/plugins/engine/beta/form-context.test.ts +22 -8
- package/src/server/plugins/engine/beta/form-context.ts +7 -6
- package/src/server/plugins/engine/components/FileUploadField.test.ts +21 -0
- package/src/server/plugins/engine/components/FileUploadField.ts +1 -0
- package/src/server/plugins/engine/helpers.test.ts +0 -74
- package/src/server/plugins/engine/helpers.ts +17 -27
- package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +54 -0
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +7 -5
- package/src/server/plugins/engine/routes/questions.ts +1 -1
- package/src/server/plugins/nunjucks/context.js +1 -3
- package/src/server/plugins/nunjucks/context.test.js +0 -37
- package/src/server/routes/dummy-api.test.ts +3 -1
|
@@ -764,6 +764,60 @@ describe('Adapter v1 formatter', () => {
|
|
|
764
764
|
})
|
|
765
765
|
|
|
766
766
|
describe('version metadata handling', () => {
|
|
767
|
+
it('should prefer $$__formVersion from definition metadata over formMetadata.versions', () => {
|
|
768
|
+
const definitionWithFormVersion = {
|
|
769
|
+
...definition,
|
|
770
|
+
metadata: {
|
|
771
|
+
$$__formVersion: {
|
|
772
|
+
versionNumber: 42,
|
|
773
|
+
createdAt: new Date('2024-06-01T00:00:00.000Z')
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
const modelWithFormVersion = new FormModel(definitionWithFormVersion, {
|
|
779
|
+
basePath: 'test'
|
|
780
|
+
})
|
|
781
|
+
|
|
782
|
+
const contextWithFormVersion = modelWithFormVersion.getFormContext(
|
|
783
|
+
request,
|
|
784
|
+
state
|
|
785
|
+
)
|
|
786
|
+
|
|
787
|
+
const formMetadata: Partial<FormMetadata> = {
|
|
788
|
+
id: 'form-123',
|
|
789
|
+
slug: 'test-form',
|
|
790
|
+
title: 'Test Form',
|
|
791
|
+
notificationEmail: 'test@example.com',
|
|
792
|
+
versions: [
|
|
793
|
+
{
|
|
794
|
+
versionNumber: 1,
|
|
795
|
+
createdAt: new Date('2024-01-01T00:00:00.000Z')
|
|
796
|
+
}
|
|
797
|
+
]
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
const formStatus = {
|
|
801
|
+
isPreview: false,
|
|
802
|
+
state: FormStatus.Live
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
const body = format(
|
|
806
|
+
contextWithFormVersion,
|
|
807
|
+
items,
|
|
808
|
+
modelWithFormVersion,
|
|
809
|
+
submitResponse,
|
|
810
|
+
formStatus,
|
|
811
|
+
formMetadata as FormMetadata
|
|
812
|
+
)
|
|
813
|
+
const parsedBody = JSON.parse(body) as FormAdapterSubmissionMessagePayload
|
|
814
|
+
|
|
815
|
+
expect(parsedBody.meta.versionMetadata).toEqual({
|
|
816
|
+
versionNumber: 42,
|
|
817
|
+
createdAt: '2024-06-01T00:00:00.000Z'
|
|
818
|
+
})
|
|
819
|
+
})
|
|
820
|
+
|
|
767
821
|
it('should include versionMetadata when context has submittedVersionNumber and formMetadata has versions', () => {
|
|
768
822
|
const formMetadata: Partial<FormMetadata> = {
|
|
769
823
|
id: 'form-123',
|
|
@@ -3,7 +3,10 @@ import {
|
|
|
3
3
|
type SubmitResponsePayload
|
|
4
4
|
} from '@defra/forms-model'
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
getFormVersion,
|
|
8
|
+
type checkFormStatus
|
|
9
|
+
} from '~/src/server/plugins/engine/helpers.js'
|
|
7
10
|
import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
8
11
|
import { type DetailItem } from '~/src/server/plugins/engine/models/types.js'
|
|
9
12
|
import { categoriseData } from '~/src/server/plugins/engine/outputFormatters/machine/v2.js'
|
|
@@ -28,10 +31,9 @@ export function format(
|
|
|
28
31
|
|
|
29
32
|
const { main: v2Main, ...v2Data } = categoriseData(items)
|
|
30
33
|
|
|
31
|
-
const versionMetadata =
|
|
32
|
-
|
|
33
|
-
formMetadata
|
|
34
|
-
)
|
|
34
|
+
const versionMetadata =
|
|
35
|
+
getFormVersion(model.def) ??
|
|
36
|
+
getVersionMetadata(context.submittedVersionNumber, formMetadata)
|
|
35
37
|
|
|
36
38
|
const meta: FormAdapterSubmissionMessageMeta = {
|
|
37
39
|
schemaVersion: FormAdapterSubmissionSchemaVersion.V1,
|
|
@@ -63,7 +63,7 @@ async function handleHttpEvent(
|
|
|
63
63
|
|
|
64
64
|
// @ts-expect-error - function signature will be refactored in the next iteration of the formatter
|
|
65
65
|
const payload = format(context, items, model, undefined, undefined)
|
|
66
|
-
const opts = { payload }
|
|
66
|
+
const opts: httpService.RequestOptions = { payload, timeout: 5000 }
|
|
67
67
|
|
|
68
68
|
if (preparePageEventRequestOptions) {
|
|
69
69
|
preparePageEventRequestOptions(opts, event, page, context)
|
|
@@ -8,8 +8,7 @@ import { config } from '~/src/config/index.js'
|
|
|
8
8
|
import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
|
|
9
9
|
import {
|
|
10
10
|
checkFormStatus,
|
|
11
|
-
encodeUrl
|
|
12
|
-
safeGenerateCrumb
|
|
11
|
+
encodeUrl
|
|
13
12
|
} from '~/src/server/plugins/engine/helpers.js'
|
|
14
13
|
|
|
15
14
|
const logger = createLogger()
|
|
@@ -51,7 +50,6 @@ export async function context(request) {
|
|
|
51
50
|
// take consumers props first so we can override it
|
|
52
51
|
...consumerViewContext,
|
|
53
52
|
baseLayoutPath: pluginStorage.baseLayoutPath,
|
|
54
|
-
crumb: safeGenerateCrumb(request),
|
|
55
53
|
currentPath: `${request.path}${request.url.search}`,
|
|
56
54
|
previewMode: isPreviewMode ? formState : undefined,
|
|
57
55
|
slug: isResponseOK ? params?.slug : undefined
|
|
@@ -101,43 +101,6 @@ describe('Nunjucks context', () => {
|
|
|
101
101
|
malformedRequest.server.plugins.crumb.generate
|
|
102
102
|
).not.toHaveBeenCalled()
|
|
103
103
|
})
|
|
104
|
-
|
|
105
|
-
it('should generate crumb when state exists', async () => {
|
|
106
|
-
const mockCrumb = 'generated-crumb-value'
|
|
107
|
-
const validRequest = /** @type {FormRequest} */ (
|
|
108
|
-
/** @type {unknown} */ ({
|
|
109
|
-
server: {
|
|
110
|
-
plugins: {
|
|
111
|
-
crumb: {
|
|
112
|
-
generate: jest.fn().mockReturnValue(mockCrumb)
|
|
113
|
-
},
|
|
114
|
-
'forms-engine-plugin': {
|
|
115
|
-
baseLayoutPath: 'randomValue'
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
plugins: {},
|
|
120
|
-
route: {
|
|
121
|
-
settings: {
|
|
122
|
-
plugins: {}
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
path: '/test',
|
|
126
|
-
url: { search: '' },
|
|
127
|
-
state: {},
|
|
128
|
-
yar: {
|
|
129
|
-
flash: jest.fn().mockReturnValue([]),
|
|
130
|
-
commit: jest.fn()
|
|
131
|
-
}
|
|
132
|
-
})
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
const { crumb } = await context(validRequest)
|
|
136
|
-
expect(crumb).toBe(mockCrumb)
|
|
137
|
-
expect(validRequest.server.plugins.crumb.generate).toHaveBeenCalledWith(
|
|
138
|
-
validRequest
|
|
139
|
-
)
|
|
140
|
-
})
|
|
141
104
|
})
|
|
142
105
|
})
|
|
143
106
|
|