Skip to content

Commit 60a2284

Browse files
committed
fix: fix PR comments
1 parent 04ae981 commit 60a2284

File tree

6 files changed

+114
-48
lines changed

6 files changed

+114
-48
lines changed

app/scripts/controller-init/messengers/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
getMultichainAssetsControllerMessenger,
2424
getMultiChainAssetsRatesControllerMessenger,
2525
} from './multichain';
26+
import { noop } from 'lodash';
2627

2728
export const CONTROLLER_MESSENGERS = {
2829
CronjobController: {
@@ -42,6 +43,7 @@ export const CONTROLLER_MESSENGERS = {
4243
},
4344
MultiChainAssetsRatesController: {
4445
getMessenger: getMultiChainAssetsRatesControllerMessenger,
46+
getInitMessenger: noop,
4547
},
4648
RateLimitController: {
4749
getMessenger: getRateLimitControllerMessenger,

app/scripts/controller-init/multichain/multichain-rates-assets-controller-init.test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ function buildInitRequestMock(): jest.Mocked<
2020
controllerMessenger: getMultiChainAssetsRatesControllerMessenger(
2121
baseControllerMessenger,
2222
),
23+
initMessenger: undefined,
2324
};
2425
}
2526

ui/selectors/assets.test.ts

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import {
2+
getAssetsRates,
3+
AssetsRatesState,
4+
AssetsState,
5+
getAccountAssets,
6+
getAssetsMetadata,
7+
} from './assets';
8+
9+
const mockRatesState = {
10+
metamask: {
11+
conversionRates: {
12+
'token-1': { rate: 1.5, currency: 'USD' },
13+
'token-2': { rate: 0.8, currency: 'EUR' },
14+
},
15+
},
16+
};
17+
18+
// Mock state for testing
19+
const mockAssetsState: AssetsState = {
20+
metamask: {
21+
accountsAssets: {
22+
'5132883f-598e-482c-a02b-84eeaa352f5b': [
23+
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501',
24+
],
25+
},
26+
assetsMetadata: {
27+
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': {
28+
name: 'Token 1',
29+
symbol: 'TKN1',
30+
iconUrl: 'https://example.com/token-1.png',
31+
fungible: true,
32+
units: [{ symbol: 'TKN1', name: 'Token 1', decimals: 9 }],
33+
},
34+
},
35+
},
36+
};
37+
38+
describe('getAccountAssets', () => {
39+
it('should return the assets from the state', () => {
40+
const result = getAccountAssets(mockAssetsState);
41+
expect(result).toEqual(mockAssetsState.metamask.accountsAssets);
42+
});
43+
44+
it('should return an empty object if accountAssets is empty', () => {
45+
const emptyState: AssetsState = {
46+
// @ts-expect-error
47+
metamask: { accountsAssets: {} },
48+
};
49+
const result = getAccountAssets(emptyState);
50+
expect(result).toEqual({});
51+
});
52+
});
53+
54+
describe('getAssetsMetadata', () => {
55+
it('should return the assets metadata from the state', () => {
56+
const result = getAssetsMetadata(mockAssetsState);
57+
expect(result).toEqual(mockAssetsState.metamask.assetsMetadata);
58+
});
59+
60+
it('should return an empty object if assetsMetadata is empty', () => {
61+
const emptyState: AssetsState = {
62+
// @ts-expect-error
63+
metamask: { assetsMetadata: {} },
64+
};
65+
const result = getAssetsMetadata(emptyState);
66+
expect(result).toEqual({});
67+
});
68+
69+
it('should return undefined if state does not have metamask property', () => {
70+
const invalidState = {} as AssetsState;
71+
expect(() => getAssetsMetadata(invalidState)).toThrow();
72+
});
73+
});
74+
75+
describe('getAssetsRates', () => {
76+
it('should return the assetsRates from the state', () => {
77+
const result = getAssetsRates(mockRatesState);
78+
expect(result).toEqual(mockRatesState.metamask.conversionRates);
79+
});
80+
81+
it('should return an empty object if assetsRates is empty', () => {
82+
const emptyState: AssetsRatesState = {
83+
metamask: { conversionRates: {} },
84+
};
85+
const result = getAssetsRates(emptyState);
86+
expect(result).toEqual({});
87+
});
88+
89+
it('should return undefined if state does not have metamask property', () => {
90+
const invalidState = {} as AssetsRatesState;
91+
expect(() => getAssetsRates(invalidState)).toThrow();
92+
});
93+
});

ui/selectors/assets.ts

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
import { MultichainAssetsControllerState } from '@metamask/assets-controllers';
1+
import {
2+
MultichainAssetsControllerState,
3+
MultichainAssetsRatesControllerState,
4+
} from '@metamask/assets-controllers';
25

36
export type AssetsState = {
47
metamask: MultichainAssetsControllerState;
58
};
69

10+
export type AssetsRatesState = {
11+
metamask: MultichainAssetsRatesControllerState;
12+
};
13+
714
/**
815
* Gets non-EVM accounts assets.
916
*
@@ -23,3 +30,13 @@ export function getAccountAssets(state: AssetsState) {
2330
export function getAssetsMetadata(state: AssetsState) {
2431
return state.metamask.assetsMetadata;
2532
}
33+
34+
/**
35+
* Gets non-EVM accounts assets rates.
36+
*
37+
* @param state - Redux state object.
38+
* @returns An object containing non-EVM assets per accounts.
39+
*/
40+
export function getAssetsRates(state: AssetsRatesState) {
41+
return state.metamask.conversionRates;
42+
}

ui/selectors/multichain-assets-rates.test.ts

-32
This file was deleted.

ui/selectors/multichain-assets-rates.ts

-15
This file was deleted.

0 commit comments

Comments
 (0)