Skip to content

Commit 3f60fb0

Browse files
committed
feat: add tc for storage mode admin email pdf
1 parent a07cede commit 3f60fb0

File tree

4 files changed

+1121
-348
lines changed

4 files changed

+1121
-348
lines changed

src/app/modules/submission/__tests__/submission.service.spec.ts

Lines changed: 134 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,9 @@ describe('submission.service', () => {
455455
form: mockForm,
456456
recipientData,
457457
submission: MOCK_SUBMISSION,
458-
attachments: MOCK_ATTACHMENTS,
458+
submissionAttachments: MOCK_ATTACHMENTS,
459+
pdfAttachment: undefined,
460+
isPaymentEnabled: false,
459461
responsesData: MOCK_AUTOREPLY_DATA,
460462
})
461463

@@ -467,7 +469,9 @@ describe('submission.service', () => {
467469
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
468470
form: mockForm,
469471
submission: MOCK_SUBMISSION,
470-
attachments: MOCK_ATTACHMENTS,
472+
submissionAttachments: MOCK_ATTACHMENTS,
473+
pdfAttachment: undefined,
474+
isPaymentEnabled: false,
471475
responsesData: MOCK_AUTOREPLY_DATA,
472476
autoReplyMailDatas: expectedAutoReplyData,
473477
})
@@ -496,7 +500,9 @@ describe('submission.service', () => {
496500
form: mockForm,
497501
recipientData,
498502
submission: MOCK_SUBMISSION,
499-
attachments: MOCK_ATTACHMENTS,
503+
submissionAttachments: MOCK_ATTACHMENTS,
504+
pdfAttachment: undefined,
505+
isPaymentEnabled: false,
500506
responsesData: MOCK_AUTOREPLY_DATA,
501507
})
502508

@@ -541,7 +547,9 @@ describe('submission.service', () => {
541547
form: mockForm,
542548
recipientData,
543549
submission: MOCK_SUBMISSION,
544-
attachments: MOCK_ATTACHMENTS,
550+
submissionAttachments: MOCK_ATTACHMENTS,
551+
pdfAttachment: undefined,
552+
isPaymentEnabled: false,
545553
responsesData: MOCK_AUTOREPLY_DATA,
546554
})
547555

@@ -592,7 +600,9 @@ describe('submission.service', () => {
592600
form: mockForm,
593601
recipientData,
594602
submission: MOCK_SUBMISSION,
595-
attachments: MOCK_ATTACHMENTS,
603+
submissionAttachments: MOCK_ATTACHMENTS,
604+
pdfAttachment: undefined,
605+
isPaymentEnabled: false,
596606
responsesData: MOCK_AUTOREPLY_DATA,
597607
})
598608

@@ -601,7 +611,9 @@ describe('submission.service', () => {
601611
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
602612
form: mockForm,
603613
submission: MOCK_SUBMISSION,
604-
attachments: MOCK_ATTACHMENTS,
614+
submissionAttachments: MOCK_ATTACHMENTS,
615+
pdfAttachment: undefined,
616+
isPaymentEnabled: false,
605617
responsesData: MOCK_AUTOREPLY_DATA,
606618
autoReplyMailDatas: expectedAutoReplyData,
607619
})
@@ -655,8 +667,10 @@ describe('submission.service', () => {
655667
form: mockForm,
656668
recipientData,
657669
submission: MOCK_SUBMISSION,
658-
attachments: MOCK_ATTACHMENTS,
659-
responsesData: undefined,
670+
submissionAttachments: MOCK_ATTACHMENTS,
671+
pdfAttachment: undefined,
672+
isPaymentEnabled: false,
673+
responsesData: [],
660674
})
661675

662676
const expectedAutoReplyData = [
@@ -667,14 +681,16 @@ describe('submission.service', () => {
667681
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
668682
form: mockForm,
669683
submission: MOCK_SUBMISSION,
670-
attachments: MOCK_ATTACHMENTS,
684+
submissionAttachments: MOCK_ATTACHMENTS,
671685
responsesData: [],
672686
autoReplyMailDatas: expectedAutoReplyData,
687+
pdfAttachment: undefined,
688+
isPaymentEnabled: false,
673689
})
674690
expect(result._unsafeUnwrap()).toBe(true)
675691
})
676692

677-
it('should call mail service with attachments undefined when there are no attachments', async () => {
693+
it('should call mail service with pdfAttachment when a pdfAttachment is provided', async () => {
678694
const mockForm = {
679695
_id: MOCK_FORM_ID,
680696
form_fields: [
@@ -717,12 +733,19 @@ describe('submission.service', () => {
717733
responses,
718734
mockForm.form_fields,
719735
)
736+
737+
const MOCK_PDF_ATTACHMENT = {
738+
content: Buffer.from('mock pdf buffer'),
739+
filename: 'response.pdf',
740+
}
720741
const result = await SubmissionService.sendEmailConfirmations({
721742
form: mockForm,
722743
recipientData,
723744
submission: MOCK_SUBMISSION,
724-
attachments: undefined,
745+
submissionAttachments: undefined,
725746
responsesData: MOCK_AUTOREPLY_DATA,
747+
isPaymentEnabled: false,
748+
pdfAttachment: MOCK_PDF_ATTACHMENT,
726749
})
727750

728751
const expectedAutoReplyData = [
@@ -733,7 +756,79 @@ describe('submission.service', () => {
733756
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
734757
form: mockForm,
735758
submission: MOCK_SUBMISSION,
736-
attachments: undefined,
759+
submissionAttachments: undefined,
760+
pdfAttachment: MOCK_PDF_ATTACHMENT,
761+
isPaymentEnabled: false,
762+
responsesData: MOCK_AUTOREPLY_DATA,
763+
autoReplyMailDatas: expectedAutoReplyData,
764+
})
765+
expect(result._unsafeUnwrap()).toBe(true)
766+
})
767+
768+
it('should call mail service with submissionAttachments undefined and pdfAttachment undefined when there are no submissionAttachments or pdfAttachment', async () => {
769+
const mockForm = {
770+
_id: MOCK_FORM_ID,
771+
form_fields: [
772+
{
773+
...generateDefaultField(BasicField.Email),
774+
autoReplyOptions: AUTOREPLY_OPTIONS_1,
775+
},
776+
{
777+
...generateDefaultField(BasicField.Email),
778+
autoReplyOptions: AUTOREPLY_OPTIONS_2,
779+
},
780+
],
781+
} as unknown as IPopulatedForm
782+
MockMailService.sendAutoReplyEmails.mockResolvedValueOnce([
783+
{
784+
status: 'fulfilled',
785+
value: ok(true),
786+
},
787+
{
788+
status: 'fulfilled',
789+
value: ok(true),
790+
},
791+
])
792+
793+
const responses = [
794+
{
795+
...generateNewSingleAnswerResponse(BasicField.Email, {
796+
_id: mockForm.form_fields![0]._id,
797+
answer: MOCK_EMAIL_1,
798+
}),
799+
},
800+
{
801+
...generateNewSingleAnswerResponse(BasicField.Email, {
802+
_id: mockForm.form_fields![1]._id,
803+
answer: MOCK_EMAIL_2,
804+
}),
805+
},
806+
]
807+
const recipientData = extractEmailConfirmationData(
808+
responses,
809+
mockForm.form_fields,
810+
)
811+
const result = await SubmissionService.sendEmailConfirmations({
812+
form: mockForm,
813+
recipientData,
814+
submission: MOCK_SUBMISSION,
815+
submissionAttachments: undefined,
816+
responsesData: MOCK_AUTOREPLY_DATA,
817+
isPaymentEnabled: false,
818+
pdfAttachment: undefined,
819+
})
820+
821+
const expectedAutoReplyData = [
822+
EXPECTED_AUTOREPLY_DATA_1,
823+
EXPECTED_AUTOREPLY_DATA_2,
824+
]
825+
826+
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
827+
form: mockForm,
828+
submission: MOCK_SUBMISSION,
829+
submissionAttachments: undefined,
830+
pdfAttachment: undefined,
831+
isPaymentEnabled: false,
737832
responsesData: MOCK_AUTOREPLY_DATA,
738833
autoReplyMailDatas: expectedAutoReplyData,
739834
})
@@ -780,8 +875,10 @@ describe('submission.service', () => {
780875
form: mockForm,
781876
recipientData,
782877
submission: MOCK_SUBMISSION,
783-
attachments: MOCK_ATTACHMENTS,
878+
submissionAttachments: MOCK_ATTACHMENTS,
784879
responsesData: MOCK_AUTOREPLY_DATA,
880+
isPaymentEnabled: false,
881+
pdfAttachment: undefined,
785882
})
786883

787884
const expectedAutoReplyData = [
@@ -792,7 +889,9 @@ describe('submission.service', () => {
792889
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
793890
form: mockForm,
794891
submission: MOCK_SUBMISSION,
795-
attachments: MOCK_ATTACHMENTS,
892+
submissionAttachments: MOCK_ATTACHMENTS,
893+
pdfAttachment: undefined,
894+
isPaymentEnabled: false,
796895
responsesData: MOCK_AUTOREPLY_DATA,
797896
autoReplyMailDatas: expectedAutoReplyData,
798897
})
@@ -849,8 +948,10 @@ describe('submission.service', () => {
849948
form: mockForm,
850949
recipientData,
851950
submission: MOCK_SUBMISSION,
852-
attachments: MOCK_ATTACHMENTS,
951+
submissionAttachments: MOCK_ATTACHMENTS,
853952
responsesData: MOCK_AUTOREPLY_DATA,
953+
isPaymentEnabled: false,
954+
pdfAttachment: undefined,
854955
})
855956

856957
const expectedAutoReplyData = [
@@ -861,9 +962,11 @@ describe('submission.service', () => {
861962
expect(MockMailService.sendAutoReplyEmails).toHaveBeenCalledWith({
862963
form: mockForm,
863964
submission: MOCK_SUBMISSION,
864-
attachments: MOCK_ATTACHMENTS,
965+
submissionAttachments: MOCK_ATTACHMENTS,
865966
responsesData: MOCK_AUTOREPLY_DATA,
866967
autoReplyMailDatas: expectedAutoReplyData,
968+
pdfAttachment: undefined,
969+
isPaymentEnabled: false,
867970
})
868971
expect(result._unsafeUnwrapErr()).toEqual(
869972
new SendEmailConfirmationError(),
@@ -2747,7 +2850,11 @@ describe('submission.service', () => {
27472850

27482851
// Act
27492852
// empty string for version id to simulate failure
2750-
const actualResult = await downloadCleanFile('invalid-key', '')
2853+
const actualResult = await downloadCleanFile(
2854+
'invalid-key',
2855+
'',
2856+
'mock-bucket-name',
2857+
)
27512858

27522859
// Assert
27532860
expect(awsSpy).not.toHaveBeenCalled()
@@ -2761,7 +2868,11 @@ describe('submission.service', () => {
27612868

27622869
// Act
27632870
// empty string for version id to simulate failure
2764-
const actualResult = await downloadCleanFile(MOCK_VALID_UUID, '')
2871+
const actualResult = await downloadCleanFile(
2872+
MOCK_VALID_UUID,
2873+
'',
2874+
'mock-bucket-name',
2875+
)
27652876

27662877
// Assert
27672878
expect(awsSpy).toHaveBeenCalledOnce()
@@ -2796,7 +2907,11 @@ describe('submission.service', () => {
27962907

27972908
// Act
27982909
// empty strings for invalid keys and version ids
2799-
const actualResult = await downloadCleanFile(MOCK_VALID_UUID, versionId)
2910+
const actualResult = await downloadCleanFile(
2911+
MOCK_VALID_UUID,
2912+
versionId,
2913+
'mock-bucket-name',
2914+
)
28002915

28012916
// Assert
28022917
expect(awsSpy).toHaveBeenCalledOnce()

0 commit comments

Comments
 (0)