1- import { renderHook , waitFor } from '@testing-library/react' ;
1+ import { waitFor } from '@testing-library/react' ;
2+ import { renderHook } from '@testing-library/react-hooks' ;
23import { describe , it , expect , vi } from 'vitest' ;
34
45vi . mock ( '@metamask/kernel-utils' , ( ) => ( {
@@ -27,10 +28,6 @@ describe('PanelContext', () => {
2728 const { PanelProvider, usePanelContext } = await import (
2829 './PanelContext.tsx'
2930 ) ;
30- const payload = {
31- method : 'getStatus' ,
32- params : [ ] ,
33- } ;
3431 const response = { success : true } ;
3532 mockSendMessage . mockResolvedValueOnce ( response ) ;
3633 vi . mocked (
@@ -43,19 +40,17 @@ describe('PanelContext', () => {
4340 </ PanelProvider >
4441 ) ,
4542 } ) ;
46- const actualResponse = await result . current . callKernelMethod ( payload ) ;
47- expect ( mockSendMessage ) . toHaveBeenCalledWith ( payload ) ;
43+ const actualResponse = await result . current . callKernelMethod ( {
44+ method : 'getStatus' ,
45+ params : [ ] ,
46+ } ) ;
4847 expect ( actualResponse ) . toBe ( response ) ;
4948 } ) ;
5049
5150 it ( 'should throw error when response is an error' , async ( ) => {
5251 const { PanelProvider, usePanelContext } = await import (
5352 './PanelContext.tsx'
5453 ) ;
55- const payload = {
56- method : 'getStatus' ,
57- params : [ ] ,
58- } ;
5954 const errorResponse = { error : 'Test error' } ;
6055 mockSendMessage . mockResolvedValueOnce ( errorResponse ) ;
6156 vi . mocked (
@@ -68,9 +63,12 @@ describe('PanelContext', () => {
6863 </ PanelProvider >
6964 ) ,
7065 } ) ;
71- await expect ( result . current . callKernelMethod ( payload ) ) . rejects . toThrow (
72- JSON . stringify ( errorResponse . error ) ,
73- ) ;
66+ await expect (
67+ result . current . callKernelMethod ( {
68+ method : 'getStatus' ,
69+ params : [ ] ,
70+ } ) ,
71+ ) . rejects . toThrow ( JSON . stringify ( errorResponse . error ) ) ;
7472 expect (
7573 vi . mocked ( await import ( '../services/logger.ts' ) ) . logger . error ,
7674 ) . toHaveBeenCalledWith (
@@ -83,10 +81,6 @@ describe('PanelContext', () => {
8381 const { PanelProvider, usePanelContext } = await import (
8482 './PanelContext.tsx'
8583 ) ;
86- const payload = {
87- method : 'getStatus' ,
88- params : [ ] ,
89- } ;
9084 const error = new Error ( 'Network error' ) ;
9185 mockSendMessage . mockRejectedValueOnce ( error ) ;
9286 const { result } = renderHook ( ( ) => usePanelContext ( ) , {
@@ -96,9 +90,12 @@ describe('PanelContext', () => {
9690 </ PanelProvider >
9791 ) ,
9892 } ) ;
99- await expect ( result . current . callKernelMethod ( payload ) ) . rejects . toThrow (
100- error ,
101- ) ;
93+ await expect (
94+ result . current . callKernelMethod ( {
95+ method : 'getStatus' ,
96+ params : [ ] ,
97+ } ) ,
98+ ) . rejects . toThrow ( error ) ;
10299 expect (
103100 vi . mocked ( await import ( '../services/logger.ts' ) ) . logger . error ,
104101 ) . toHaveBeenCalledWith ( `Error: ${ error . message } ` , 'error' ) ;
@@ -108,14 +105,6 @@ describe('PanelContext', () => {
108105 const { PanelProvider, usePanelContext } = await import (
109106 './PanelContext.tsx'
110107 ) ;
111- const firstPayload = {
112- method : 'getStatus' ,
113- params : [ ] ,
114- } ;
115- const secondPayload = {
116- method : 'getStatus' ,
117- params : [ ] ,
118- } ;
119108
120109 // Use a promise that we control to ensure the first request is still in progress
121110 let resolveFirstRequest ! : ( value : { success : boolean } ) => void ;
@@ -136,12 +125,17 @@ describe('PanelContext', () => {
136125 } ) ;
137126
138127 // Start the first request but don't await it
139- const firstRequestPromiseResult =
140- result . current . callKernelMethod ( firstPayload ) ;
128+ const firstRequestPromiseResult = result . current . callKernelMethod ( {
129+ method : 'getStatus' ,
130+ params : [ ] ,
131+ } ) ;
141132
142133 // Try to make a second request while the first is still processing
143134 await expect (
144- result . current . callKernelMethod ( secondPayload ) ,
135+ result . current . callKernelMethod ( {
136+ method : 'getStatus' ,
137+ params : [ ] ,
138+ } ) ,
145139 ) . rejects . toThrow ( 'A request is already in progress' ) ;
146140
147141 // Resolve the first request to clean up
@@ -176,17 +170,8 @@ describe('PanelContext', () => {
176170 describe ( 'usePanelContext' , ( ) => {
177171 it ( 'should throw error when used outside of PanelProvider' , async ( ) => {
178172 const { usePanelContext } = await import ( './PanelContext.tsx' ) ;
179-
180- // Use a try-catch block to verify the error
181- let caughtError : Error | null = null ;
182- try {
183- renderHook ( ( ) => usePanelContext ( ) ) ;
184- } catch ( error ) {
185- caughtError = error as Error ;
186- }
187-
188- // Expect the error to be thrown
189- expect ( caughtError ) . toStrictEqual (
173+ const { result } = renderHook ( ( ) => usePanelContext ( ) ) ;
174+ expect ( result . error ) . toStrictEqual (
190175 new Error ( 'usePanelContext must be used within a PanelProvider' ) ,
191176 ) ;
192177 } ) ;
0 commit comments