@@ -2396,3 +2396,101 @@ describe('#getConnectedSitesList', () => {
23962396 } ) ;
23972397 } ) ;
23982398} ) ;
2399+
2400+ describe ( 'getNativeTokenInfo' , ( ) => {
2401+ const arrange = ( ) => {
2402+ const state = {
2403+ metamask : {
2404+ networkConfigurationsByChainId : { } ,
2405+ provider : { } ,
2406+ } ,
2407+ } ;
2408+
2409+ return { state } ;
2410+ } ;
2411+
2412+ it ( 'provides native token info from a network a user has added' , ( ) => {
2413+ const mocks = arrange ( ) ;
2414+ mocks . state . metamask . networkConfigurationsByChainId [ '0x1337' ] = {
2415+ nativeCurrency : 'HELLO' ,
2416+ name : 'MyToken' ,
2417+ } ;
2418+
2419+ const result = selectors . getNativeTokenInfo ( mocks . state , '0x1337' ) ;
2420+ expect ( result ) . toStrictEqual ( {
2421+ symbol : 'HELLO' ,
2422+ decimals : 18 ,
2423+ name : 'MyToken' ,
2424+ } ) ;
2425+ } ) ;
2426+
2427+ it ( 'provides native token info from a network added but with fallbacks for missing fields' , ( ) => {
2428+ const mocks = arrange ( ) ;
2429+ mocks . state . metamask . networkConfigurationsByChainId [ '0x1337' ] = {
2430+ nativeCurrency : undefined ,
2431+ name : undefined ,
2432+ } ;
2433+
2434+ const result = selectors . getNativeTokenInfo ( mocks . state , '0x1337' ) ;
2435+ expect ( result ) . toStrictEqual ( {
2436+ symbol : 'NATIVE' ,
2437+ decimals : 18 ,
2438+ name : 'Native Token' ,
2439+ } ) ;
2440+ } ) ;
2441+
2442+ it ( 'provides native token from DApp provider' , ( ) => {
2443+ const mocks = arrange ( ) ;
2444+ mocks . state . metamask . provider = {
2445+ chainId : '0x1337' ,
2446+ ticker : 'HELLO' ,
2447+ nativeCurrency : { decimals : 18 } ,
2448+ nickname : 'MyToken' ,
2449+ } ;
2450+
2451+ const result = selectors . getNativeTokenInfo ( mocks . state , '0x1337' ) ;
2452+ expect ( result ) . toStrictEqual ( {
2453+ symbol : 'HELLO' ,
2454+ decimals : 18 ,
2455+ name : 'MyToken' ,
2456+ } ) ;
2457+ } ) ;
2458+
2459+ it ( 'provides native token from DApp provider but with fallbacks for missing fields' , ( ) => {
2460+ const mocks = arrange ( ) ;
2461+ mocks . state . metamask . provider = {
2462+ chainId : '0x1337' ,
2463+ ticker : undefined ,
2464+ nativeCurrency : undefined ,
2465+ nickname : undefined ,
2466+ } ;
2467+
2468+ const result = selectors . getNativeTokenInfo ( mocks . state , '0x1337' ) ;
2469+ expect ( result ) . toStrictEqual ( {
2470+ symbol : 'NATIVE' ,
2471+ decimals : 18 ,
2472+ name : 'Native Token' ,
2473+ } ) ;
2474+ } ) ;
2475+
2476+ it ( 'provides native token from known list of hardcoded native tokens' , ( ) => {
2477+ const mocks = arrange ( ) ;
2478+
2479+ const result = selectors . getNativeTokenInfo ( mocks . state , '0x89' ) ;
2480+ expect ( result ) . toStrictEqual ( {
2481+ symbol : 'POL' ,
2482+ decimals : 18 ,
2483+ name : 'Polygon' ,
2484+ } ) ;
2485+ } ) ;
2486+
2487+ it ( 'fallbacks for unknown native token info' , ( ) => {
2488+ const mocks = arrange ( ) ;
2489+ const result = selectors . getNativeTokenInfo ( mocks . state , '0xFakeToken' ) ;
2490+ expect ( result ) . toStrictEqual ( {
2491+ symbol : 'NATIVE' ,
2492+ decimals : 18 ,
2493+ name : 'Native Token' ,
2494+ } ) ;
2495+ } ) ;
2496+ } ) ;
0 commit comments