@@ -340,6 +340,41 @@ describe('FlexQueryClient', () => {
340340 expect ( mockGet ) . toHaveBeenCalledTimes ( 2 ) ;
341341 } ) ;
342342
343+ it ( 'should retry when fallback transient message casing differs' , async ( ) => {
344+ const sendResponseXml = `<?xml version="1.0" encoding="UTF-8"?>
345+ <FlexStatementResponse timestamp="26 August, 2023 01:59 PM EDT">
346+ <Status>Success</Status>
347+ <ReferenceCode>${ mockReferenceCode } </ReferenceCode>
348+ </FlexStatementResponse>` ;
349+
350+ const transientXml = `<?xml version="1.0" encoding="UTF-8"?>
351+ <FlexStatementResponse timestamp="26 August, 2023 02:00 PM EDT">
352+ <Status>Fail</Status>
353+ <ErrorCode>9999</ErrorCode>
354+ <ErrorMessage>Statement could not be retrieved. Try Again Shortly.</ErrorMessage>
355+ </FlexStatementResponse>` ;
356+
357+ const statementXml = `<?xml version="1.0" encoding="UTF-8"?>
358+ <FlexQueryResponse queryName="Test Query" type="AF">
359+ <FlexStatements count="1">
360+ <FlexStatement accountId="U12345" />
361+ </FlexStatements>
362+ </FlexQueryResponse>` ;
363+
364+ const mockGet = vi . fn ( )
365+ . mockResolvedValueOnce ( { data : sendResponseXml } )
366+ . mockResolvedValueOnce ( { data : transientXml } )
367+ . mockResolvedValueOnce ( { data : statementXml } ) ;
368+
369+ ( axios . create as any ) . mockReturnValue ( { get : mockGet } ) ;
370+ client = new FlexQueryClient ( { token : mockToken } ) ;
371+
372+ const result = await client . executeQuery ( mockQueryId , 3 , 10 ) ;
373+
374+ expect ( result ) . toEqual ( { data : statementXml } ) ;
375+ expect ( mockGet ) . toHaveBeenCalledTimes ( 3 ) ;
376+ } ) ;
377+
343378 it ( 'should return error when sendRequest fails' , async ( ) => {
344379 const sendResponseXml = `<?xml version="1.0" encoding="UTF-8"?>
345380<FlexStatementResponse timestamp="26 August, 2023 01:59 PM EDT">
@@ -446,4 +481,3 @@ describe('FlexQueryClient', () => {
446481 } ) ;
447482 } ) ;
448483} ) ;
449-
0 commit comments