@@ -85,6 +85,7 @@ vi.mock('@utils/trpc', () => ({
8585 mailingList : {
8686 subscribe : {
8787 useMutation : vi . fn ( ( ) => ( {
88+ mutate : vi . fn ( ) ,
8889 mutateAsync : vi . fn ( ) ,
8990 isPending : false ,
9091 isSuccess : false ,
@@ -268,36 +269,30 @@ describe('NewsletterSignupPage', () => {
268269
269270 it ( 'should show success state after successful submission' , async ( ) => {
270271 // Create a mock that properly triggers the onSuccess callback
271- let onSuccessCallback : ( ( data : unknown ) => void ) | null = null ;
272-
273- const mockMutateAsync = vi . fn ( ) . mockImplementation ( async ( _data ) => {
274- // Simulate the mutation completing successfully
275- const result = { success : true } ;
276- // Call the onSuccess callback if it exists
277- if ( onSuccessCallback ) {
278- onSuccessCallback ( result ) ;
272+ let capturedOnSuccess : ( ( data : unknown ) => void ) | null = null ;
273+ const mockMutate = vi . fn ( ) . mockImplementation ( ( ) => {
274+ // Simulate successful mutation by calling the captured onSuccess callback
275+ if ( capturedOnSuccess ) {
276+ capturedOnSuccess ( { data : { id : "sub_12345" } , error : null } ) ;
279277 }
280- return result ;
281278 } ) ;
282279
283- // Mock successful mutation that will trigger onSuccess
280+ // Mock successful mutation that will capture and trigger onSuccess
284281 const { trpc } = await import ( '@utils/trpc' ) ;
285- const mockUseMutation = vi . fn (
286- ( options : { onSuccess ?: ( data : unknown ) => void } ) => {
287- // Store the onSuccess callback
288- onSuccessCallback = options ?. onSuccess || null ;
289-
290- return {
291- mutateAsync : mockMutateAsync ,
292- isPending : false ,
293- isSuccess : false ,
294- error : null ,
295- } ;
296- }
297- ) ;
282+ const mockUseMutation = vi . fn ( ) . mockImplementation ( ( options ) => {
283+ // Capture the onSuccess callback
284+ capturedOnSuccess = options ?. onSuccess || null ;
285+
286+ return {
287+ mutate : mockMutate ,
288+ mutateAsync : vi . fn ( ) ,
289+ isPending : false ,
290+ isSuccess : false ,
291+ error : null ,
292+ } ;
293+ } ) ;
298294
299295 vi . mocked ( trpc . mailingList . subscribe . useMutation ) . mockImplementation (
300- // @ts -expect-error - Mock implementation for testing
301296 mockUseMutation
302297 ) ;
303298
@@ -347,35 +342,29 @@ describe('NewsletterSignupPage', () => {
347342
348343 it ( 'should show success state with correct link to newsletter' , async ( ) => {
349344 // Create a mock that properly triggers the onSuccess callback
350- let onSuccessCallback : ( ( data : unknown ) => void ) | null = null ;
351-
352- const mockMutateAsync = vi . fn ( ) . mockImplementation ( async ( _data ) => {
353- // Simulate the mutation completing successfully
354- const result = { success : true } ;
355- // Call the onSuccess callback if it exists
356- if ( onSuccessCallback ) {
357- onSuccessCallback ( result ) ;
345+ let capturedOnSuccess : ( ( data : unknown ) => void ) | null = null ;
346+ const mockMutate = vi . fn ( ) . mockImplementation ( ( ) => {
347+ // Simulate successful mutation by calling the captured onSuccess callback
348+ if ( capturedOnSuccess ) {
349+ capturedOnSuccess ( { data : { id : "sub_12345" } , error : null } ) ;
358350 }
359- return result ;
360351 } ) ;
361352
362353 const { trpc } = await import ( '@utils/trpc' ) ;
363- const mockUseMutation = vi . fn (
364- ( options : { onSuccess ?: ( data : unknown ) => void } ) => {
365- // Store the onSuccess callback
366- onSuccessCallback = options ?. onSuccess || null ;
367-
368- return {
369- mutateAsync : mockMutateAsync ,
370- isPending : false ,
371- isSuccess : false ,
372- error : null ,
373- } ;
374- }
375- ) ;
354+ const mockUseMutation = vi . fn ( ) . mockImplementation ( ( options ) => {
355+ // Capture the onSuccess callback
356+ capturedOnSuccess = options ?. onSuccess || null ;
357+
358+ return {
359+ mutate : mockMutate ,
360+ mutateAsync : vi . fn ( ) ,
361+ isPending : false ,
362+ isSuccess : false ,
363+ error : null ,
364+ } ;
365+ } ) ;
376366
377367 vi . mocked ( trpc . mailingList . subscribe . useMutation ) . mockImplementation (
378- // @ts -expect-error - Mock implementation for testing
379368 mockUseMutation
380369 ) ;
381370
0 commit comments