Skip to content

Commit eaafa9f

Browse files
committed
refactor(payment): change payments structure to a single payment object
1 parent 2257708 commit eaafa9f

7 files changed

Lines changed: 20 additions & 18 deletions

File tree

src/server/plugins/engine/outputFormatters/adapter/v1.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,6 @@ describe('Adapter v1 formatter', () => {
249249
exampleField: 'hello world',
250250
exampleField2: 'hello world'
251251
},
252-
payments: {},
253252
repeaters: {
254253
exampleRepeat: [
255254
{

src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,12 @@ describe('getPersonalisation', () => {
9191
licenceLength: 365,
9292
fullName: 'John Smith'
9393
},
94-
payments: {
95-
paymentField: {
96-
amount: 250,
97-
createdAt: '2026-01-02T11:00:04+0000',
98-
description: 'Payment desc',
99-
paymentId: 'payment-id',
100-
reference: 'payment-ref'
101-
}
94+
payment: {
95+
amount: 250,
96+
createdAt: '2026-01-02T11:00:04+0000',
97+
description: 'Payment desc',
98+
paymentId: 'payment-id',
99+
reference: 'payment-ref'
102100
},
103101
repeaters: {},
104102
files: {}

src/server/plugins/engine/outputFormatters/machine/v2.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ describe('getPersonalisation', () => {
233233
exampleField: 'hello world',
234234
exampleField2: 'hello world'
235235
},
236-
payments: {},
237236
repeaters: {
238237
exampleRepeat: [
239238
{
@@ -292,7 +291,6 @@ describe('getPersonalisation', () => {
292291
main: {
293292
orderType: 'delivery'
294293
},
295-
payments: {},
296294
repeaters: {
297295
pizza: [
298296
{

src/server/plugins/engine/outputFormatters/machine/v2.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ export function categoriseData(items: DetailItem[]) {
106106
string,
107107
{ fileId: string; fileName: string; userDownloadLink: string }[]
108108
>
109-
payments: Record<string, PaymentOutput>
110-
} = { main: {}, repeaters: {}, files: {}, payments: {} }
109+
payment?: PaymentOutput
110+
} = { main: {}, repeaters: {}, files: {} }
111111

112112
items.forEach((item) => {
113113
const { name, state } = item
@@ -119,7 +119,7 @@ export function categoriseData(items: DetailItem[]) {
119119
} else if (isPaymentFieldItem(item)) {
120120
const payment = extractPayment(item)
121121
if (payment) {
122-
output.payments[name] = payment
122+
output.payment = payment
123123
}
124124
} else {
125125
output.main[name] = item.field.getFormValueFromState(state)

src/server/plugins/engine/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ export interface FormAdapterSubmissionMessageData {
503503
main: Record<string, RichFormValue | null>
504504
repeaters: Record<string, Record<string, RichFormValue>[]>
505505
files: Record<string, FormAdapterFile[]>
506-
payments: Record<string, FormAdapterPayment>
506+
payment?: FormAdapterPayment
507507
}
508508

509509
export interface FormAdapterSubmissionMessagePayload {

src/server/plugins/engine/types/schema.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ describe('Schema validation', () => {
5656
'http://localhost:3005/file-download/489ecc1b-a145-4618-ba5a-b4a0d5ee2dbd'
5757
}
5858
]
59-
},
60-
payments: {}
59+
}
6160
}
6261

6362
describe('formAdapterSubmissionMessageMetaSchema', () => {

src/server/plugins/engine/types/schema.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,15 @@ export const formAdapterSubmissionMessageDataSchema =
4343
Joi.object<FormAdapterSubmissionMessageData>().keys({
4444
main: Joi.object(),
4545
repeaters: Joi.object(),
46-
payments: Joi.object(),
46+
payment: Joi.object()
47+
.keys({
48+
paymentId: Joi.string().required(),
49+
reference: Joi.string().required(),
50+
amount: Joi.number().required(),
51+
description: Joi.string().required(),
52+
createdAt: Joi.string().required()
53+
})
54+
.optional(),
4755
files: Joi.object().pattern(
4856
Joi.string(),
4957
Joi.array().items(

0 commit comments

Comments
 (0)