1- import { Messenger } from '@metamask/base-controller' ;
21import { getDefaultKeyringState } from '@metamask/keyring-controller' ;
2+ import {
3+ Messenger ,
4+ MOCK_ANY_NAMESPACE ,
5+ type MessengerActions ,
6+ type MessengerEvents ,
7+ type MockAnyNamespace ,
8+ } from '@metamask/messenger' ;
39import { cloneDeep } from 'lodash' ;
410
511import { ETHERSCAN_SUPPORTED_CHAIN_IDS } from './constants' ;
612import type {
7- AllowedEvents ,
813 EtherscanSupportedHexChainId ,
9- PreferencesControllerActions ,
10- PreferencesControllerEvents ,
14+ PreferencesControllerMessenger ,
1115} from './PreferencesController' ;
1216import { PreferencesController } from './PreferencesController' ;
1317
@@ -54,7 +58,7 @@ describe('PreferencesController', () => {
5458
5559 describe ( 'KeyringController:stateChange' , ( ) => {
5660 it ( 'should update identities state to reflect new keyring accounts' , ( ) => {
57- const messenger = getMessenger ( ) ;
61+ const messenger = getRootMessenger ( ) ;
5862 const controller = setupPreferencesController ( {
5963 options : {
6064 state : {
@@ -102,7 +106,7 @@ describe('PreferencesController', () => {
102106 } ) ;
103107
104108 it ( 'should update identities state to reflect removed keyring accounts' , ( ) => {
105- const messenger = getMessenger ( ) ;
109+ const messenger = getRootMessenger ( ) ;
106110 const controller = setupPreferencesController ( {
107111 options : {
108112 state : {
@@ -141,7 +145,7 @@ describe('PreferencesController', () => {
141145 } ) ;
142146
143147 it ( 'should update selected address to first identity if the selected address was removed' , ( ) => {
144- const messenger = getMessenger ( ) ;
148+ const messenger = getRootMessenger ( ) ;
145149 const controller = setupPreferencesController ( {
146150 options : {
147151 state : {
@@ -183,7 +187,7 @@ describe('PreferencesController', () => {
183187 '0x01' : { address : '0x01' , importTime : 2 , name : 'Account 2' } ,
184188 '0x02' : { address : '0x02' , importTime : 3 , name : 'Account 3' } ,
185189 } ;
186- const messenger = getMessenger ( ) ;
190+ const messenger = getRootMessenger ( ) ;
187191 const controller = setupPreferencesController ( {
188192 options : {
189193 state : {
@@ -221,7 +225,7 @@ describe('PreferencesController', () => {
221225 '0x01' : { address : '0x01' , importTime : 2 , name : 'Account 2' } ,
222226 '0x02' : { address : '0x02' , importTime : 3 , name : 'Account 3' } ,
223227 } ;
224- const messenger = getMessenger ( ) ;
228+ const messenger = getRootMessenger ( ) ;
225229 const controller = setupPreferencesController ( {
226230 options : {
227231 state : {
@@ -259,7 +263,7 @@ describe('PreferencesController', () => {
259263 '0x01' : { address : '0x01' , importTime : 2 , name : 'Account 2' } ,
260264 '0x02' : { address : '0x02' , importTime : 3 , name : 'Account 3' } ,
261265 } ;
262- const messenger = getMessenger ( ) ;
266+ const messenger = getRootMessenger ( ) ;
263267 const controller = setupPreferencesController ( {
264268 options : {
265269 state : {
@@ -305,7 +309,7 @@ describe('PreferencesController', () => {
305309 '0x01' : { address : '0x01' , importTime : 2 , name : 'Account 2' } ,
306310 '0x02' : { address : '0x02' , importTime : 3 , name : 'Account 3' } ,
307311 } ;
308- const messenger = getMessenger ( ) ;
312+ const messenger = getRootMessenger ( ) ;
309313 const controller = setupPreferencesController ( {
310314 options : {
311315 state : {
@@ -574,22 +578,27 @@ describe('PreferencesController', () => {
574578 } ) ;
575579} ) ;
576580
581+ type AllPreferencesControllerActions =
582+ MessengerActions < PreferencesControllerMessenger > ;
583+
584+ type AllPreferencesControllerEvents =
585+ MessengerEvents < PreferencesControllerMessenger > ;
586+
587+ type RootMessenger = Messenger <
588+ MockAnyNamespace ,
589+ AllPreferencesControllerActions ,
590+ AllPreferencesControllerEvents
591+ > ;
592+
577593/**
578- * Construct a messenger for use in PreferencesController tests.
579- *
580- * This is a utility function that saves us from manually entering the correct
581- * type parameters for the Messenger each time we construct it.
594+ * Creates and returns a root messenger for testing
582595 *
583- * @returns A messenger
596+ * @returns A messenger instance
584597 */
585- function getMessenger ( ) : Messenger <
586- PreferencesControllerActions ,
587- PreferencesControllerEvents | AllowedEvents
588- > {
589- return new Messenger <
590- PreferencesControllerActions ,
591- PreferencesControllerEvents | AllowedEvents
592- > ( ) ;
598+ function getRootMessenger ( ) : RootMessenger {
599+ return new Messenger ( {
600+ namespace : MOCK_ANY_NAMESPACE ,
601+ } ) ;
593602}
594603
595604/**
@@ -602,22 +611,24 @@ function getMessenger(): Messenger<
602611 */
603612function setupPreferencesController ( {
604613 options = { } ,
605- messenger = getMessenger ( ) ,
614+ messenger = getRootMessenger ( ) ,
606615} : {
607616 options ?: Partial < ConstructorParameters < typeof PreferencesController > [ 0 ] > ;
608- messenger ?: Messenger <
609- PreferencesControllerActions ,
610- PreferencesControllerEvents | AllowedEvents
611- > ;
617+ messenger ?: RootMessenger ;
612618} = { } ) {
613- const preferencesControllerMessenger = messenger . getRestricted <
619+ const preferencesControllerMessenger = new Messenger <
614620 'PreferencesController' ,
615- never ,
616- AllowedEvents [ 'type' ]
621+ AllPreferencesControllerActions ,
622+ AllPreferencesControllerEvents ,
623+ RootMessenger
617624 > ( {
618- name : 'PreferencesController' ,
619- allowedActions : [ ] ,
620- allowedEvents : [ 'KeyringController:stateChange' ] ,
625+ namespace : 'PreferencesController' ,
626+ parent : messenger ,
627+ } ) ;
628+ messenger . delegate ( {
629+ messenger : preferencesControllerMessenger ,
630+ actions : [ ] ,
631+ events : [ 'KeyringController:stateChange' ] ,
621632 } ) ;
622633 return new PreferencesController ( {
623634 messenger : preferencesControllerMessenger ,
0 commit comments