-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathindex.test.ts
More file actions
106 lines (91 loc) · 3.24 KB
/
Copy pathindex.test.ts
File metadata and controls
106 lines (91 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import type { InternalAccount } from '@metamask/keyring-internal-api';
import { getPerpsControllerMessenger } from '.';
import { ExtendedMessenger } from '../../../ExtendedMessenger';
import { MOCK_ANY_NAMESPACE, MockAnyNamespace } from '@metamask/messenger';
interface GetSelectedAccountAction {
type: 'AccountsController:getSelectedAccount';
handler: () => InternalAccount;
}
describe('PerpsController Messenger', () => {
const selectedAccount: InternalAccount = {
id: 'selected-account-id',
address: '0x1111111111111111111111111111111111111111',
type: 'eip155:eoa' as const,
options: {},
methods: [],
metadata: {
name: 'Selected Account',
importTime: Date.now(),
keyring: {
type: 'HD Key Tree',
},
},
scopes: ['eip155:1'],
};
it('returns an instance of the perps controller messenger', () => {
const baseControllerMessenger = new ExtendedMessenger<MockAnyNamespace>({
namespace: MOCK_ANY_NAMESPACE,
});
const result = getPerpsControllerMessenger(baseControllerMessenger);
const expectedMethods = [
'call',
'clearEventSubscriptions',
'publish',
'registerActionHandler',
'registerInitialEventPayload',
'subscribe',
'unregisterActionHandler',
'unsubscribe',
] as const;
expectedMethods.forEach((method) => {
expect(typeof result[method]).toBe('function');
});
});
it('delegates the selected account action to the perps controller messenger', () => {
const baseControllerMessenger = new ExtendedMessenger<
MockAnyNamespace,
GetSelectedAccountAction
>({
namespace: MOCK_ANY_NAMESPACE,
});
baseControllerMessenger.registerActionHandler(
'AccountsController:getSelectedAccount',
() => selectedAccount,
);
const result = getPerpsControllerMessenger(baseControllerMessenger);
expect(result.call('AccountsController:getSelectedAccount')).toBe(
selectedAccount,
);
});
it('delegates required events to the perps controller messenger', () => {
const baseControllerMessenger = new ExtendedMessenger<MockAnyNamespace>({
namespace: MOCK_ANY_NAMESPACE,
});
const delegateSpy = jest.spyOn(baseControllerMessenger, 'delegate');
getPerpsControllerMessenger(baseControllerMessenger);
expect(delegateSpy).toHaveBeenCalledWith(
expect.objectContaining({
events: expect.arrayContaining([
'RemoteFeatureFlagController:stateChange',
'AccountsController:selectedAccountChange',
'AccountTreeController:selectedAccountGroupChange',
]),
}),
);
});
it('delegates AUS notification-preference actions to the perps controller messenger', () => {
const baseControllerMessenger = new ExtendedMessenger<MockAnyNamespace>({
namespace: MOCK_ANY_NAMESPACE,
});
const delegateSpy = jest.spyOn(baseControllerMessenger, 'delegate');
getPerpsControllerMessenger(baseControllerMessenger);
expect(delegateSpy).toHaveBeenCalledWith(
expect.objectContaining({
actions: expect.arrayContaining([
'AuthenticatedUserStorageService:getNotificationPreferences',
'AuthenticatedUserStorageService:putNotificationPreferences',
]),
}),
);
});
});