@@ -12,6 +12,7 @@ import { DatabaseTemplate } from 'nhs-notify-web-template-management-utils';
1212import { ProofingQueue } from '@backend-api/templates/infra/proofing-queue' ;
1313import { createMockLogger } from 'nhs-notify-web-template-management-test-helper-utils/mock-logger' ;
1414import { isoDateRegExp } from 'nhs-notify-web-template-management-test-helper-utils' ;
15+ import { ClientConfigRepository } from '@backend-api/templates/infra/client-config-repository' ;
1516
1617jest . mock ( 'node:crypto' ) ;
1718
@@ -27,19 +28,28 @@ const setup = () => {
2728
2829 const queueMock = mock < ProofingQueue > ( ) ;
2930
31+ const clientConfigRepository = mock < ClientConfigRepository > ( ) ;
32+
3033 const { logger, logMessages } = createMockLogger ( ) ;
3134
3235 const templateClient = new TemplateClient (
3336 templateRepository ,
3437 letterUploadRepository ,
3538 queueMock ,
3639 defaultLetterSupplier ,
40+ clientConfigRepository ,
3741 logger
3842 ) ;
3943
4044 return {
4145 templateClient,
42- mocks : { templateRepository, letterUploadRepository, queueMock, logger } ,
46+ mocks : {
47+ templateRepository,
48+ letterUploadRepository,
49+ queueMock,
50+ logger,
51+ clientConfigRepository,
52+ } ,
4353 logMessages,
4454 } ;
4555} ;
@@ -118,7 +128,8 @@ describe('templateClient', () => {
118128 data ,
119129 user . userId ,
120130 user . clientId ,
121- 'NOT_YET_SUBMITTED'
131+ 'NOT_YET_SUBMITTED' ,
132+ undefined
122133 ) ;
123134
124135 expect ( result ) . toEqual ( {
@@ -163,7 +174,8 @@ describe('templateClient', () => {
163174 data ,
164175 user . userId ,
165176 user . clientId ,
166- 'NOT_YET_SUBMITTED'
177+ 'NOT_YET_SUBMITTED' ,
178+ undefined
167179 ) ;
168180
169181 expect ( result ) . toEqual ( {
@@ -195,20 +207,29 @@ describe('templateClient', () => {
195207 const template : DatabaseTemplate = {
196208 ...expectedTemplateDto ,
197209 owner : user . userId ,
210+ campaignId : 'campaignId' ,
198211 version : 1 ,
199212 } ;
200213
201214 mocks . templateRepository . create . mockResolvedValueOnce ( {
202215 data : template ,
203216 } ) ;
204217
218+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
219+ campaignId : 'campaignId' ,
220+ features : {
221+ proofing : true ,
222+ } ,
223+ } ) ;
224+
205225 const result = await templateClient . createTemplate ( data , user ) ;
206226
207227 expect ( mocks . templateRepository . create ) . toHaveBeenCalledWith (
208228 data ,
209229 user . userId ,
210230 user . clientId ,
211- 'NOT_YET_SUBMITTED'
231+ 'NOT_YET_SUBMITTED' ,
232+ 'campaignId'
212233 ) ;
213234
214235 expect ( result ) . toEqual ( {
@@ -291,12 +312,18 @@ describe('templateClient', () => {
291312 data : finalTemplate ,
292313 } ) ;
293314
315+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
316+ campaignId : 'campaignId' ,
317+ features : {
318+ proofing : true ,
319+ } ,
320+ } ) ;
321+
294322 const result = await templateClient . createLetterTemplate (
295323 data ,
296324 user ,
297325 pdf ,
298- csv ,
299- 'campaignId'
326+ csv
300327 ) ;
301328
302329 expect ( result ) . toEqual ( {
@@ -307,7 +334,8 @@ describe('templateClient', () => {
307334 dataWithFiles ,
308335 user . userId ,
309336 user . clientId ,
310- 'PENDING_UPLOAD'
337+ 'PENDING_UPLOAD' ,
338+ 'campaignId'
311339 ) ;
312340
313341 expect ( mocks . letterUploadRepository . upload ) . toHaveBeenCalledWith (
@@ -524,7 +552,8 @@ describe('templateClient', () => {
524552 dataWithFiles ,
525553 user . userId ,
526554 user . clientId ,
527- 'PENDING_UPLOAD'
555+ 'PENDING_UPLOAD' ,
556+ undefined
528557 ) ;
529558
530559 expect ( mocks . letterUploadRepository . upload ) . not . toHaveBeenCalled ( ) ;
@@ -637,7 +666,8 @@ describe('templateClient', () => {
637666 dataWithFiles ,
638667 user . userId ,
639668 user . clientId ,
640- 'PENDING_UPLOAD'
669+ 'PENDING_UPLOAD' ,
670+ undefined
641671 ) ;
642672
643673 expect ( mocks . letterUploadRepository . upload ) . toHaveBeenCalledWith (
@@ -721,7 +751,8 @@ describe('templateClient', () => {
721751 dataWithFiles ,
722752 user . userId ,
723753 user . clientId ,
724- 'PENDING_UPLOAD'
754+ 'PENDING_UPLOAD' ,
755+ undefined
725756 ) ;
726757
727758 expect ( mocks . letterUploadRepository . upload ) . toHaveBeenCalledWith (
@@ -1293,11 +1324,7 @@ describe('templateClient', () => {
12931324 test ( 'should return a failure result, when proofing is disabled' , async ( ) => {
12941325 const { templateClient, mocks } = setup ( ) ;
12951326
1296- const result = await templateClient . requestProof (
1297- templateId ,
1298- owner ,
1299- false
1300- ) ;
1327+ const result = await templateClient . requestProof ( templateId , user ) ;
13011328
13021329 expect (
13031330 mocks . templateRepository . proofRequestUpdate
@@ -1306,7 +1333,7 @@ describe('templateClient', () => {
13061333 expect ( result ) . toEqual ( {
13071334 error : {
13081335 code : 403 ,
1309- message : 'User can not request a proof' ,
1336+ message : 'User cannot request a proof' ,
13101337 } ,
13111338 } ) ;
13121339 } ) ;
@@ -1324,6 +1351,13 @@ describe('templateClient', () => {
13241351 } ,
13251352 } ) ;
13261353
1354+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
1355+ campaignId : 'campaignId' ,
1356+ features : {
1357+ proofing : true ,
1358+ } ,
1359+ } ) ;
1360+
13271361 const result = await templateClient . requestProof ( templateId , user ) ;
13281362
13291363 expect ( mocks . templateRepository . proofRequestUpdate ) . toHaveBeenCalledWith (
@@ -1374,6 +1408,13 @@ describe('templateClient', () => {
13741408 data : template ,
13751409 } ) ;
13761410
1411+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
1412+ campaignId : 'campaignId' ,
1413+ features : {
1414+ proofing : true ,
1415+ } ,
1416+ } ) ;
1417+
13771418 const result = await templateClient . requestProof ( templateId , user ) ;
13781419
13791420 expect ( mocks . templateRepository . proofRequestUpdate ) . toHaveBeenCalledWith (
@@ -1414,6 +1455,13 @@ describe('templateClient', () => {
14141455 data : template ,
14151456 } ) ;
14161457
1458+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
1459+ campaignId : 'campaignId' ,
1460+ features : {
1461+ proofing : true ,
1462+ } ,
1463+ } ) ;
1464+
14171465 const result = await templateClient . requestProof ( templateId , user ) ;
14181466
14191467 expect ( mocks . templateRepository . proofRequestUpdate ) . toHaveBeenCalledWith (
@@ -1468,6 +1516,13 @@ describe('templateClient', () => {
14681516 } ,
14691517 } ) ;
14701518
1519+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
1520+ campaignId : 'campaignId' ,
1521+ features : {
1522+ proofing : true ,
1523+ } ,
1524+ } ) ;
1525+
14711526 const result = await templateClient . requestProof ( templateId , user ) ;
14721527
14731528 expect ( mocks . templateRepository . proofRequestUpdate ) . toHaveBeenCalledWith (
@@ -1494,6 +1549,36 @@ describe('templateClient', () => {
14941549 } ) ;
14951550 } ) ;
14961551
1552+ test ( 'should return a failure result, when proofing is not enabled' , async ( ) => {
1553+ const { templateClient, mocks } = setup ( ) ;
1554+
1555+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
1556+ campaignId : 'campaignId' ,
1557+ features : {
1558+ proofing : false ,
1559+ } ,
1560+ } ) ;
1561+
1562+ const result = await templateClient . requestProof ( templateId , user ) ;
1563+
1564+ expect ( mocks . clientConfigRepository . get ) . toHaveBeenCalledWith (
1565+ user . userId
1566+ ) ;
1567+
1568+ expect (
1569+ mocks . templateRepository . proofRequestUpdate
1570+ ) . not . toHaveBeenCalled ( ) ;
1571+
1572+ expect ( mocks . queueMock . send ) . not . toHaveBeenCalled ( ) ;
1573+
1574+ expect ( result ) . toEqual ( {
1575+ error : {
1576+ code : 403 ,
1577+ message : 'User cannot request a proof' ,
1578+ } ,
1579+ } ) ;
1580+ } ) ;
1581+
14971582 test ( 'should return updated template' , async ( ) => {
14981583 const { templateClient, mocks } = setup ( ) ;
14991584
@@ -1519,6 +1604,13 @@ describe('templateClient', () => {
15191604 } ,
15201605 } ;
15211606
1607+ mocks . clientConfigRepository . get . mockResolvedValueOnce ( {
1608+ campaignId : 'campaignId' ,
1609+ features : {
1610+ proofing : true ,
1611+ } ,
1612+ } ) ;
1613+
15221614 mocks . templateRepository . proofRequestUpdate . mockResolvedValueOnce ( {
15231615 data : { ...template , owner : user . userId , version : 1 } ,
15241616 } ) ;
0 commit comments