1
+ /* eslint-disable jest/no-export */
1
2
import type { Draft , Patch } from 'immer' ;
2
3
import * as sinon from 'sinon' ;
3
4
5
+ import { JsonRpcEngine } from '../../json-rpc-engine/src' ;
6
+ import { TestController } from './BaseControllerV1.test' ;
4
7
import type {
5
8
ControllerGetStateAction ,
6
9
ControllerStateChangeEvent ,
@@ -9,27 +12,28 @@ import {
9
12
BaseController ,
10
13
getAnonymizedState ,
11
14
getPersistentState ,
15
+ isBaseController ,
12
16
} from './BaseControllerV2' ;
13
17
import { ControllerMessenger } from './ControllerMessenger' ;
14
18
import type { RestrictedControllerMessenger } from './RestrictedControllerMessenger' ;
15
19
16
- const countControllerName = 'CountController' ;
20
+ export const countControllerName = 'CountController' ;
17
21
18
22
type CountControllerState = {
19
23
count : number ;
20
24
} ;
21
25
22
- type CountControllerAction = ControllerGetStateAction <
26
+ export type CountControllerAction = ControllerGetStateAction <
23
27
typeof countControllerName ,
24
28
CountControllerState
25
29
> ;
26
30
27
- type CountControllerEvent = ControllerStateChangeEvent <
31
+ export type CountControllerEvent = ControllerStateChangeEvent <
28
32
typeof countControllerName ,
29
33
CountControllerState
30
34
> ;
31
35
32
- const countControllerStateMetadata = {
36
+ export const countControllerStateMetadata = {
33
37
count : {
34
38
persist : true ,
35
39
anonymous : true ,
@@ -50,7 +54,7 @@ type CountMessenger = RestrictedControllerMessenger<
50
54
* @param controllerMessenger - The controller messenger.
51
55
* @returns A restricted controller messenger for the Count controller.
52
56
*/
53
- function getCountMessenger (
57
+ export function getCountMessenger (
54
58
controllerMessenger ?: ControllerMessenger <
55
59
CountControllerAction ,
56
60
CountControllerEvent
@@ -69,7 +73,7 @@ function getCountMessenger(
69
73
} ) ;
70
74
}
71
75
72
- class CountController extends BaseController <
76
+ export class CountController extends BaseController <
73
77
typeof countControllerName ,
74
78
CountControllerState ,
75
79
CountMessenger
@@ -177,6 +181,33 @@ class MessagesController extends BaseController<
177
181
}
178
182
}
179
183
184
+ describe ( 'isBaseController' , ( ) => {
185
+ it ( 'should return true if passed a V2 controller' , ( ) => {
186
+ const controllerMessenger = new ControllerMessenger <
187
+ CountControllerAction ,
188
+ CountControllerEvent
189
+ > ( ) ;
190
+ const controller = new CountController ( {
191
+ messenger : getCountMessenger ( controllerMessenger ) ,
192
+ name : countControllerName ,
193
+ state : { count : 0 } ,
194
+ metadata : countControllerStateMetadata ,
195
+ } ) ;
196
+ expect ( isBaseController ( controller ) ) . toBe ( true ) ;
197
+ } ) ;
198
+
199
+ it ( 'should return false if passed a V1 controller' , ( ) => {
200
+ const controller = new TestController ( ) ;
201
+ expect ( isBaseController ( controller ) ) . toBe ( false ) ;
202
+ } ) ;
203
+
204
+ it ( 'should return false if passed a non-controller' , ( ) => {
205
+ const notController = new JsonRpcEngine ( ) ;
206
+ // @ts -expect-error Intentionally passing invalid input to test runtime behavior
207
+ expect ( isBaseController ( notController ) ) . toBe ( false ) ;
208
+ } ) ;
209
+ } ) ;
210
+
180
211
describe ( 'BaseController' , ( ) => {
181
212
afterEach ( ( ) => {
182
213
sinon . restore ( ) ;
0 commit comments