From ea61ff3d035872828fc712430a28d3a2f660b0a8 Mon Sep 17 00:00:00 2001 From: revisedbytom <322501590+revisedbytom@users.noreply.github.com> Date: Sat, 29 Aug 2026 15:57:37 +0100 Subject: [PATCH] test(sample-controllers): demonstrate messenger interactions Show how controller tests can assert delegated action calls and published state events without changing production behavior. Co-authored-by: Cursor --- .../src/sample-gas-prices-controller.test.ts | 22 +++++++++++++++++++ .../src/sample-petnames-controller.test.ts | 22 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/packages/sample-controllers/src/sample-gas-prices-controller.test.ts b/packages/sample-controllers/src/sample-gas-prices-controller.test.ts index d0d345a034e..794e1645815 100644 --- a/packages/sample-controllers/src/sample-gas-prices-controller.test.ts +++ b/packages/sample-controllers/src/sample-gas-prices-controller.test.ts @@ -335,6 +335,28 @@ describe('SampleGasPricesController', () => { }); }); }); + + it('calls the gas prices service through the messenger', async () => { + await withController(async ({ controller, rootMessenger, messenger }) => { + const chainId = '0x42'; + rootMessenger.registerActionHandler( + 'SampleGasPricesService:fetchGasPrices', + async () => ({ + low: 5, + average: 10, + high: 15, + }), + ); + const messengerCall = jest.spyOn(messenger, 'call'); + + await controller.updateGasPrices({ chainId }); + + expect(messengerCall).toHaveBeenCalledWith( + 'SampleGasPricesService:fetchGasPrices', + chainId, + ); + }); + }); }); describe('metadata', () => { diff --git a/packages/sample-controllers/src/sample-petnames-controller.test.ts b/packages/sample-controllers/src/sample-petnames-controller.test.ts index 68a4217779c..adae29f26d9 100644 --- a/packages/sample-controllers/src/sample-petnames-controller.test.ts +++ b/packages/sample-controllers/src/sample-petnames-controller.test.ts @@ -190,6 +190,28 @@ describe('SamplePetnamesController', () => { }, ); }); + + it('publishes state changes through the messenger', async () => { + await withController(({ controller, controllerMessenger }) => { + const stateChangeListener = jest.fn(); + controllerMessenger.subscribe( + // eslint-disable-next-line no-restricted-syntax + 'SamplePetnamesController:stateChange', + stateChangeListener, + ); + + controller.assignPetname('0x1', '0xAAAAAA', 'Account 1'); + + expect(stateChangeListener).toHaveBeenCalledTimes(1); + expect(stateChangeListener.mock.calls[0][0]).toStrictEqual({ + namesByChainIdAndAddress: { + '0x1': { + '0xaaaaaa': 'Account 1', + }, + }, + }); + }); + }); }); describe('metadata', () => {