@@ -31,7 +31,11 @@ import { AccountTreeController } from './AccountTreeController';
31
31
import type { AccountGroupObject } from './group' ;
32
32
import { AccountTreeGroup } from './group' ;
33
33
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' ;
35
39
import {
36
40
type AccountTreeControllerMessenger ,
37
41
type AccountTreeControllerActions ,
@@ -1667,35 +1671,173 @@ describe('AccountTreeController', () => {
1667
1671
} ) ;
1668
1672
} ) ;
1669
1673
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 ) ;
1675
1680
1676
- rootMessenger . registerActionHandler (
1677
- 'AccountsController:getAccount' ,
1678
- ( ) => undefined ,
1679
- ) ;
1681
+ rootMessenger . registerActionHandler (
1682
+ 'AccountsController:getAccount' ,
1683
+ ( ) => undefined ,
1684
+ ) ;
1680
1685
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 ,
1692
1700
} ,
1693
- pinned : false ,
1694
- hidden : false ,
1695
- } ,
1696
- } ;
1701
+ } ;
1702
+
1703
+ expect ( rule . getComputedAccountGroupName ( group ) ) . toBe ( '' ) ;
1704
+ } ) ;
1697
1705
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
+ } ) ;
1699
1841
} ) ;
1700
1842
} ) ;
1701
1843
0 commit comments