11import { renderHook } from '@testing-library/react-hooks' ;
22import { useShouldRenderGasSponsoredBanner } from './index' ;
33import { useIsNetworkGasSponsored } from '../useIsNetworkGasSponsored' ;
4+ import { useIsHardwareWalletForBridge } from '../useIsHardwareWalletForBridge' ;
45import { useSelector } from 'react-redux' ;
56import {
67 selectSourceToken ,
78 selectDestToken ,
89} from '../../../../../core/redux/slices/bridge' ;
910
1011jest . mock ( '../useIsNetworkGasSponsored' ) ;
12+ jest . mock ( '../useIsHardwareWalletForBridge' ) ;
1113jest . mock ( 'react-redux' , ( ) => ( {
1214 useSelector : jest . fn ( ) ,
1315} ) ) ;
@@ -16,6 +18,10 @@ const mockUseIsNetworkGasSponsored =
1618 useIsNetworkGasSponsored as jest . MockedFunction <
1719 typeof useIsNetworkGasSponsored
1820 > ;
21+ const mockUseIsHardwareWalletForBridge =
22+ useIsHardwareWalletForBridge as jest . MockedFunction <
23+ typeof useIsHardwareWalletForBridge
24+ > ;
1925const mockUseSelector = useSelector as jest . MockedFunction < typeof useSelector > ;
2026
2127const SOURCE_CHAIN_ID = '0x1' ;
@@ -51,6 +57,7 @@ describe('useShouldRenderGasSponsoredBanner', () => {
5157 jest . clearAllMocks ( ) ;
5258 mockTokens ( { } ) ;
5359 mockUseIsNetworkGasSponsored . mockReturnValue ( false ) ;
60+ mockUseIsHardwareWalletForBridge . mockReturnValue ( false ) ;
5461 } ) ;
5562
5663 describe ( 'returns true when quoteGasSponsored is true' , ( ) => {
@@ -146,6 +153,43 @@ describe('useShouldRenderGasSponsoredBanner', () => {
146153 } ) ;
147154
148155 describe ( 'returns false' , ( ) => {
156+ it ( 'returns false when quote is sponsored but source account is a hardware wallet' , ( ) => {
157+ // Arrange
158+ mockUseIsHardwareWalletForBridge . mockReturnValue ( true ) ;
159+
160+ // Act
161+ const { result } = renderHook ( ( ) =>
162+ useShouldRenderGasSponsoredBanner ( {
163+ quoteGasSponsored : true ,
164+ hasInsufficientBalance : false ,
165+ } ) ,
166+ ) ;
167+
168+ // Assert
169+ expect ( result . current ) . toBe ( false ) ;
170+ } ) ;
171+
172+ it ( 'returns false when insufficient balance and network is sponsored but source account is a hardware wallet' , ( ) => {
173+ // Arrange
174+ mockTokens ( {
175+ sourceChainId : SOURCE_CHAIN_ID ,
176+ destChainId : SAME_CHAIN_DEST_CHAIN_ID ,
177+ } ) ;
178+ mockUseIsNetworkGasSponsored . mockReturnValue ( true ) ;
179+ mockUseIsHardwareWalletForBridge . mockReturnValue ( true ) ;
180+
181+ // Act
182+ const { result } = renderHook ( ( ) =>
183+ useShouldRenderGasSponsoredBanner ( {
184+ quoteGasSponsored : false ,
185+ hasInsufficientBalance : true ,
186+ } ) ,
187+ ) ;
188+
189+ // Assert
190+ expect ( result . current ) . toBe ( false ) ;
191+ } ) ;
192+
149193 it ( 'returns false when quoteGasSponsored is false and balance is sufficient' , ( ) => {
150194 // Arrange
151195 mockUseIsNetworkGasSponsored . mockReturnValue ( false ) ;
0 commit comments