Skip to content

Commit 69255b8

Browse files
committed
improve test coverage
1 parent 3d9dd64 commit 69255b8

File tree

1 file changed

+168
-26
lines changed

1 file changed

+168
-26
lines changed

packages/account-tree-controller/src/AccountTreeController.test.ts

Lines changed: 168 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ import { AccountTreeController } from './AccountTreeController';
3131
import type { AccountGroupObject } from './group';
3232
import { AccountTreeGroup } from './group';
3333
import { BaseRule } from './rule';
34-
import { getAccountWalletNameFromKeyringType } from './rules/keyring';
34+
import {
35+
KeyringRule,
36+
getAccountWalletNameFromKeyringType,
37+
} from './rules/keyring';
38+
import { SnapRule } from './rules/snap';
3539
import {
3640
type AccountTreeControllerMessenger,
3741
type AccountTreeControllerActions,
@@ -1667,35 +1671,173 @@ describe('AccountTreeController', () => {
16671671
});
16681672
});
16691673

1670-
describe('BaseRule', () => {
1671-
it('fallbacks to emptry group name if we cannot get its account', () => {
1672-
const rootMessenger = getRootMessenger();
1673-
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1674-
const rule = new BaseRule(messenger);
1674+
describe('Rules', () => {
1675+
describe('BaseRule', () => {
1676+
it('returns empty string for getComputedAccountGroupName when account is not found', () => {
1677+
const rootMessenger = getRootMessenger();
1678+
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1679+
const rule = new BaseRule(messenger);
16751680

1676-
rootMessenger.registerActionHandler(
1677-
'AccountsController:getAccount',
1678-
() => undefined,
1679-
);
1681+
rootMessenger.registerActionHandler(
1682+
'AccountsController:getAccount',
1683+
() => undefined,
1684+
);
16801685

1681-
const group: AccountGroupObject = {
1682-
id: toMultichainAccountGroupId(
1683-
toMultichainAccountWalletId('test'),
1684-
MOCK_HD_ACCOUNT_1.options.entropy.groupIndex,
1685-
),
1686-
type: AccountGroupType.MultichainAccount,
1687-
accounts: [MOCK_HD_ACCOUNT_1.id],
1688-
metadata: {
1689-
name: MOCK_HD_ACCOUNT_1.metadata.name,
1690-
entropy: {
1691-
groupIndex: MOCK_HD_ACCOUNT_1.options.entropy.groupIndex,
1686+
const group: AccountGroupObject = {
1687+
id: toMultichainAccountGroupId(
1688+
toMultichainAccountWalletId('test'),
1689+
MOCK_HD_ACCOUNT_1.options.entropy.groupIndex,
1690+
),
1691+
type: AccountGroupType.MultichainAccount,
1692+
accounts: [MOCK_HD_ACCOUNT_1.id],
1693+
metadata: {
1694+
name: MOCK_HD_ACCOUNT_1.metadata.name,
1695+
entropy: {
1696+
groupIndex: MOCK_HD_ACCOUNT_1.options.entropy.groupIndex,
1697+
},
1698+
pinned: false,
1699+
hidden: false,
16921700
},
1693-
pinned: false,
1694-
hidden: false,
1695-
},
1696-
};
1701+
};
1702+
1703+
expect(rule.getComputedAccountGroupName(group)).toBe('');
1704+
});
16971705

1698-
expect(rule.getDefaultAccountGroupName(group)).toBe('');
1706+
it('returns empty string for getDefaultAccountGroupName when no index is provided', () => {
1707+
const rootMessenger = getRootMessenger();
1708+
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1709+
const rule = new BaseRule(messenger);
1710+
1711+
rootMessenger.registerActionHandler(
1712+
'AccountsController:getAccount',
1713+
() => undefined,
1714+
);
1715+
1716+
const group: AccountGroupObject = {
1717+
id: toMultichainAccountGroupId(
1718+
toMultichainAccountWalletId('test'),
1719+
MOCK_HD_ACCOUNT_1.options.entropy.groupIndex,
1720+
),
1721+
type: AccountGroupType.MultichainAccount,
1722+
accounts: [MOCK_HD_ACCOUNT_1.id],
1723+
metadata: {
1724+
name: MOCK_HD_ACCOUNT_1.metadata.name,
1725+
entropy: {
1726+
groupIndex: MOCK_HD_ACCOUNT_1.options.entropy.groupIndex,
1727+
},
1728+
pinned: false,
1729+
hidden: false,
1730+
},
1731+
};
1732+
1733+
expect(rule.getDefaultAccountGroupName(group)).toBe('');
1734+
});
1735+
});
1736+
1737+
describe('SnapRule', () => {
1738+
it('uses BaseRule implementation for getComputedAccountGroupName', () => {
1739+
const rootMessenger = getRootMessenger();
1740+
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1741+
const rule = new SnapRule(messenger);
1742+
1743+
rootMessenger.registerActionHandler(
1744+
'AccountsController:getAccount',
1745+
() => MOCK_SNAP_ACCOUNT_1,
1746+
);
1747+
1748+
const group: AccountGroupObject = {
1749+
id: toAccountGroupId(
1750+
toAccountWalletId(AccountWalletType.Snap, MOCK_SNAP_1.id),
1751+
MOCK_SNAP_ACCOUNT_1.address,
1752+
),
1753+
type: AccountGroupType.SingleAccount,
1754+
accounts: [MOCK_SNAP_ACCOUNT_1.id],
1755+
metadata: {
1756+
name: MOCK_SNAP_ACCOUNT_1.metadata.name,
1757+
pinned: false,
1758+
hidden: false,
1759+
},
1760+
};
1761+
1762+
expect(rule.getComputedAccountGroupName(group)).toBe(
1763+
MOCK_SNAP_ACCOUNT_1.metadata.name,
1764+
);
1765+
});
1766+
1767+
it('uses BaseRule implementation for getDefaultAccountGroupName', () => {
1768+
const rootMessenger = getRootMessenger();
1769+
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1770+
const rule = new SnapRule(messenger);
1771+
1772+
const group: AccountGroupObject = {
1773+
id: toAccountGroupId(
1774+
toAccountWalletId(AccountWalletType.Snap, MOCK_SNAP_1.id),
1775+
MOCK_SNAP_ACCOUNT_1.address,
1776+
),
1777+
type: AccountGroupType.SingleAccount,
1778+
accounts: [MOCK_SNAP_ACCOUNT_1.id],
1779+
metadata: {
1780+
name: MOCK_SNAP_ACCOUNT_1.metadata.name,
1781+
pinned: false,
1782+
hidden: false,
1783+
},
1784+
};
1785+
1786+
expect(rule.getDefaultAccountGroupName(group, 0)).toBe('Account 1');
1787+
});
1788+
});
1789+
1790+
describe('KeyringRule', () => {
1791+
it('uses BaseRule implementation for getComputedAccountGroupName', () => {
1792+
const rootMessenger = getRootMessenger();
1793+
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1794+
const rule = new KeyringRule(messenger);
1795+
1796+
rootMessenger.registerActionHandler(
1797+
'AccountsController:getAccount',
1798+
() => MOCK_HARDWARE_ACCOUNT_1,
1799+
);
1800+
1801+
const group: AccountGroupObject = {
1802+
id: toAccountGroupId(
1803+
toAccountWalletId(AccountWalletType.Keyring, KeyringTypes.ledger),
1804+
MOCK_HARDWARE_ACCOUNT_1.address,
1805+
),
1806+
type: AccountGroupType.SingleAccount,
1807+
accounts: [MOCK_HARDWARE_ACCOUNT_1.id],
1808+
metadata: {
1809+
name: MOCK_HARDWARE_ACCOUNT_1.metadata.name,
1810+
pinned: false,
1811+
hidden: false,
1812+
},
1813+
};
1814+
1815+
expect(rule.getComputedAccountGroupName(group)).toBe(
1816+
MOCK_HARDWARE_ACCOUNT_1.metadata.name,
1817+
);
1818+
});
1819+
1820+
it('uses BaseRule implementation for getDefaultAccountGroupName', () => {
1821+
const rootMessenger = getRootMessenger();
1822+
const messenger = getAccountTreeControllerMessenger(rootMessenger);
1823+
const rule = new KeyringRule(messenger);
1824+
1825+
const group: AccountGroupObject = {
1826+
id: toAccountGroupId(
1827+
toAccountWalletId(AccountWalletType.Keyring, KeyringTypes.ledger),
1828+
MOCK_HARDWARE_ACCOUNT_1.address,
1829+
),
1830+
type: AccountGroupType.SingleAccount,
1831+
accounts: [MOCK_HARDWARE_ACCOUNT_1.id],
1832+
metadata: {
1833+
name: MOCK_HARDWARE_ACCOUNT_1.metadata.name,
1834+
pinned: false,
1835+
hidden: false,
1836+
},
1837+
};
1838+
1839+
expect(rule.getDefaultAccountGroupName(group, 0)).toBe('Account 1');
1840+
});
16991841
});
17001842
});
17011843

0 commit comments

Comments
 (0)