@@ -122,22 +122,43 @@ function buildInitRequestMock(
122122 TransactionControllerInitMessenger
123123 >
124124> {
125+ const {
126+ predictControllerMock : providedPredictControllerMock ,
127+ ...requestOverrides
128+ } = initRequestProperties ;
129+ const predictControllerMock =
130+ ( providedPredictControllerMock as ControllerMock | undefined ) ??
131+ buildControllerMock ( ) ;
125132 const initMessenger = new ExtendedMessenger < MockAnyNamespace > ( {
126133 namespace : MOCK_ANY_NAMESPACE ,
127134 } ) ;
128135 const baseControllerMessenger = new ExtendedMessenger < MockAnyNamespace > ( {
129136 namespace : MOCK_ANY_NAMESPACE ,
130137 } ) ;
138+ ( initMessenger as unknown as { call : jest . Mock } ) . call = jest . fn (
139+ ( actionType : string , params : unknown ) => {
140+ if ( actionType === 'PredictController:beforePublish' ) {
141+ return predictControllerMock . beforePublish ( params ) ;
142+ }
143+
144+ if ( actionType === 'PredictController:publish' ) {
145+ return predictControllerMock . publish ( params ) ;
146+ }
147+
148+ throw new Error ( `Unexpected init messenger action: ${ actionType } ` ) ;
149+ } ,
150+ ) ;
151+
131152 const requestMock = {
132153 ...buildMessengerClientInitRequestMock ( baseControllerMessenger ) ,
133154 initMessenger :
134155 initMessenger as unknown as TransactionControllerInitMessenger ,
135156 controllerMessenger :
136157 baseControllerMessenger as unknown as TransactionControllerMessenger ,
137- ...initRequestProperties ,
158+ ...requestOverrides ,
138159 } ;
139160
140- if ( ! initRequestProperties . getMessengerClient ) {
161+ if ( ! requestOverrides . getMessengerClient ) {
141162 requestMock . getMessengerClient . mockReturnValue ( buildControllerMock ( ) ) ;
142163 }
143164
@@ -339,11 +360,7 @@ describe('Transaction Controller Init', () => {
339360 'hooks' ,
340361 { } ,
341362 {
342- getMessengerClient : jest . fn ( ( controllerName : string ) =>
343- controllerName === 'PredictController'
344- ? predictControllerMock
345- : buildControllerMock ( ) ,
346- ) ,
363+ predictControllerMock,
347364 } ,
348365 ) ;
349366
@@ -388,11 +405,7 @@ describe('Transaction Controller Init', () => {
388405 'hooks' ,
389406 { } ,
390407 {
391- getMessengerClient : jest . fn ( ( controllerName : string ) =>
392- controllerName === 'PredictController'
393- ? predictControllerMock
394- : buildControllerMock ( ) ,
395- ) ,
408+ predictControllerMock,
396409 } ,
397410 ) ;
398411
@@ -422,11 +435,7 @@ describe('Transaction Controller Init', () => {
422435 'hooks' ,
423436 { } ,
424437 {
425- getMessengerClient : jest . fn ( ( controllerName : string ) =>
426- controllerName === 'PredictController'
427- ? predictControllerMock
428- : buildControllerMock ( ) ,
429- ) ,
438+ predictControllerMock,
430439 } ,
431440 ) ;
432441
@@ -437,52 +446,6 @@ describe('Transaction Controller Init', () => {
437446 expect ( submitSmartTransactionHookMock ) . not . toHaveBeenCalled ( ) ;
438447 } ) ;
439448
440- it ( 'marks the latest transaction intent complete when Predict publish completes an intent' , async ( ) => {
441- const predictControllerMock = buildControllerMock ( {
442- publish : jest . fn ( ) . mockResolvedValue ( {
443- transactionHash : '0xpredict' ,
444- isIntentComplete : true ,
445- } ) ,
446- } as unknown as Partial < NetworkController > ) ;
447- const getTransactionByIdMock = jest . requireMock (
448- '../../../../util/transactions' ,
449- ) . getTransactionById ;
450- getTransactionByIdMock . mockReturnValue ( { ...MOCK_TRANSACTION_META } ) ;
451- const hooks = testConstructorOption (
452- 'hooks' ,
453- { } ,
454- {
455- getMessengerClient : jest . fn ( ( controllerName : string ) =>
456- controllerName === 'PredictController'
457- ? predictControllerMock
458- : buildControllerMock ( ) ,
459- ) ,
460- } ,
461- ) ;
462-
463- const result = await hooks ?. publish ?.( MOCK_TRANSACTION_META ) ;
464-
465- const transactionControllerInstance = transactionControllerClassMock . mock
466- . instances [ 0 ] as unknown as {
467- updateTransaction : jest . Mock ;
468- } ;
469-
470- expect ( result ) . toEqual ( { transactionHash : '0xpredict' } ) ;
471- expect ( getTransactionByIdMock ) . toHaveBeenCalledWith (
472- MOCK_TRANSACTION_META . id ,
473- transactionControllerInstance ,
474- ) ;
475- expect (
476- transactionControllerInstance . updateTransaction ,
477- ) . toHaveBeenCalledWith (
478- expect . objectContaining ( {
479- id : MOCK_TRANSACTION_META . id ,
480- isIntentComplete : true ,
481- } ) ,
482- 'Predict claim relayer intent complete' ,
483- ) ;
484- } ) ;
485-
486449 it ( 'passes isSmartTransaction returning false to pay hook when stxDisabled is true' , async ( ) => {
487450 selectMetaMaskPayFlagsMock . mockReturnValue ( {
488451 attemptsMax : 2 ,
0 commit comments