Skip to content

Commit 30d4289

Browse files
Merge pull request #564 from oneblink/OB-2228
OB-2228 # Added civic rec workflow event validation
2 parents a798c5a + 0b00507 commit 30d4289

File tree

4 files changed

+65
-7
lines changed

4 files changed

+65
-7
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Added
1111

1212
- custom pdf read only validation
13+
- Civic Rec Workflow Event validation
1314

1415
## [11.0.1] - 2025-03-19
1516

package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/lib/forms-schema/index.ts

+5
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ export const formWorkflowEventTypes: SubmissionEventTypes.FormWorkflowEventType[
248248
'FRESHDESK_ADD_NOTE_TO_TICKET',
249249
'SHAREPOINT_CREATE_LIST_ITEM',
250250
'SHAREPOINT_STORE_FILES',
251+
'CIVIC_REC_COMPLETE_CHECKOUT',
251252
]
252253

253254
export const WorkflowEventSchema = Joi.object().keys({
@@ -479,6 +480,10 @@ export const WorkflowEventSchema = Joi.object().keys({
479480
excludeAttachments: Joi.boolean().default(false),
480481
...pdfSubmissionEventConfiguration,
481482
}),
483+
})
484+
.when('type', {
485+
is: 'CIVIC_REC_COMPLETE_CHECKOUT',
486+
then: Joi.object().keys({}),
482487
}),
483488
...formEventBaseSchema,
484489
})

tests/forms-schema/forms-schema-form-events.test.ts

+58-6
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ describe('Scheduling events should throw errors when not passed to "schedulingEv
6464
submissionEvents: [schedulingEvent],
6565
}),
6666
).toThrow(
67-
'"submissionEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES]',
67+
'"submissionEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES, CIVIC_REC_COMPLETE_CHECKOUT]',
6868
)
6969
})
7070
test('SCHEDULING form event should error when being passed to "paymentEvents"', () => {
@@ -116,7 +116,7 @@ describe('Payment events should throw errors when not passed to "paymentEvents"
116116
submissionEvents: [paymentEvent],
117117
}),
118118
).toThrow(
119-
'"submissionEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES]',
119+
'"submissionEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES, CIVIC_REC_COMPLETE_CHECKOUT]',
120120
)
121121
})
122122
test('Payment form event should error when being passed to "schedulingEvents"', () => {
@@ -343,7 +343,7 @@ describe('"draftEvents" and "approvalEvents" should allow only submission events
343343
draftEvents: [paymentEvent],
344344
}),
345345
).toThrow(
346-
'"draftEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES]',
346+
'"draftEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES, CIVIC_REC_COMPLETE_CHECKOUT]',
347347
)
348348
})
349349
test('SCHEDULING form event should error when being passed to "draftEvents"', () => {
@@ -353,7 +353,7 @@ describe('"draftEvents" and "approvalEvents" should allow only submission events
353353
draftEvents: [schedulingEvent],
354354
}),
355355
).toThrow(
356-
'"draftEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES]',
356+
'"draftEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES, CIVIC_REC_COMPLETE_CHECKOUT]',
357357
)
358358
})
359359
test('Should not error when passing submissionEvents to "draftEvents"', () => {
@@ -372,7 +372,7 @@ describe('"draftEvents" and "approvalEvents" should allow only submission events
372372
approvalEvents: [paymentEvent],
373373
}),
374374
).toThrow(
375-
'"approvalEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES]',
375+
'"approvalEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES, CIVIC_REC_COMPLETE_CHECKOUT]',
376376
)
377377
})
378378
test('SCHEDULING form event should error when being passed to "approvalEvents"', () => {
@@ -382,7 +382,7 @@ describe('"draftEvents" and "approvalEvents" should allow only submission events
382382
approvalEvents: [schedulingEvent],
383383
}),
384384
).toThrow(
385-
'"approvalEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES]',
385+
'"approvalEvents[0].type" must be one of [CALLBACK, POWER_AUTOMATE_FLOW, CP_INTEGRATION_HUB_WEBHOOK, PDF, EMAIL, ONEBLINK_API, TRIM, CP_HCMS, CIVICA_CRM, FRESHDESK_CREATE_TICKET, FRESHDESK_ADD_NOTE_TO_TICKET, SHAREPOINT_CREATE_LIST_ITEM, SHAREPOINT_STORE_FILES, CIVIC_REC_COMPLETE_CHECKOUT]',
386386
)
387387
})
388388
test('Should not error when passing submissionEvents to "approvalEvents"', () => {
@@ -482,6 +482,58 @@ describe('SHAREPOINT_STORE_FILES', () => {
482482
})
483483
})
484484

485+
describe('CIVIC_REC_COMPLETE_CHECKOUT', () => {
486+
const validSubmissionEvent = {
487+
type: 'CIVIC_REC_COMPLETE_CHECKOUT',
488+
configuration: {},
489+
}
490+
it('should allow empty object as the configuration', () => {
491+
const form = validateFormThrowError({
492+
...defaultForm,
493+
submissionEvents: [validSubmissionEvent],
494+
})
495+
496+
expect(form.submissionEvents[0]).toEqual({
497+
...validSubmissionEvent,
498+
conditionallyExecute: false,
499+
requiresAllConditionallyExecutePredicates: false,
500+
configuration: {},
501+
})
502+
})
503+
504+
it('should strip out any additional data in the configuration', () => {
505+
const form = validateFormThrowError({
506+
...defaultForm,
507+
submissionEvents: [
508+
{
509+
...validSubmissionEvent,
510+
configuration: { fakeVariable: "I'm fake!" },
511+
},
512+
],
513+
})
514+
515+
expect(form.submissionEvents[0]).toEqual({
516+
...validSubmissionEvent,
517+
conditionallyExecute: false,
518+
requiresAllConditionallyExecutePredicates: false,
519+
configuration: {},
520+
})
521+
})
522+
523+
it('should fail without empty configuration on the submission event', () => {
524+
expect(() =>
525+
validateFormThrowError({
526+
...defaultForm,
527+
submissionEvents: [
528+
{
529+
type: 'CIVIC_REC_COMPLETE_CHECKOUT',
530+
},
531+
],
532+
}),
533+
).toThrow('"submissionEvents[0].configuration" is required')
534+
})
535+
})
536+
485537
describe('PDF configuration', () => {
486538
const submissionEvent = {
487539
type: 'PDF',

0 commit comments

Comments
 (0)