|
|
|
import React from 'react';
|
|
|
|
import { Provider } from 'react-redux';
|
|
|
|
import { renderHook } from '@testing-library/react-hooks';
|
|
|
|
|
|
|
|
import configureStore from '../store/store';
|
|
|
|
import useAddressDetails from './useAddressDetails';
|
|
|
|
|
|
|
|
const renderUseAddressDetails = (toAddress, stateVariables = {}) => {
|
|
|
|
const mockState = {
|
|
|
|
metamask: {
|
|
|
|
provider: {
|
|
|
|
type: 'test',
|
|
|
|
chainId: '0x5',
|
|
|
|
},
|
|
|
|
tokenList: {},
|
|
|
|
...stateVariables,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
const wrapper = ({ children }) => (
|
|
|
|
<Provider store={configureStore(mockState)}>{children}</Provider>
|
|
|
|
);
|
|
|
|
|
|
|
|
return renderHook(() => useAddressDetails(toAddress), { wrapper });
|
|
|
|
};
|
|
|
|
|
|
|
|
describe('useAddressDetails', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
jest.clearAllMocks();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return empty object if no address is passed', () => {
|
|
|
|
const { result } = renderUseAddressDetails();
|
|
|
|
expect(result.current).toStrictEqual({});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return name from addressBook if address is present in addressBook', () => {
|
|
|
|
const { result } = renderUseAddressDetails(
|
|
|
|
'0x06195827297c7A80a443b6894d3BDB8824b43896',
|
|
|
|
{
|
|
|
|
addressBook: {
|
|
|
|
'0x5': {
|
|
|
|
'0x06195827297c7A80a443b6894d3BDB8824b43896': {
|
|
|
|
address: '0x06195827297c7A80a443b6894d3BDB8824b43896',
|
|
|
|
name: 'Address Book Account 1',
|
|
|
|
chainId: '0x5',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
const { toName, isTrusted } = result.current;
|
|
|
|
expect(toName).toBe('Address Book Account 1');
|
|
|
|
expect(isTrusted).toBe(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return name from identities if address is present in identities', () => {
|
|
|
|
const { result } = renderUseAddressDetails(
|
|
|
|
'0x06195827297c7A80a443b6894d3BDB8824b43896',
|
|
|
|
{
|
|
|
|
identities: {
|
|
|
|
'0x06195827297c7A80a443b6894d3BDB8824b43896': {
|
|
|
|
address: '0x06195827297c7A80a443b6894d3BDB8824b43896',
|
|
|
|
name: 'Account 1',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
const { toName, isTrusted } = result.current;
|
|
|
|
expect(toName).toBe('Account 1');
|
|
|
|
expect(isTrusted).toBe(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return name from tokenlist if address is present in tokens', () => {
|
|
|
|
const { result } = renderUseAddressDetails(
|
|
|
|
'0x06195827297c7A80a443b6894d3BDB8824b43896',
|
|
|
|
{
|
|
|
|
useTokenDetection: true,
|
|
|
|
tokenList: {
|
|
|
|
'0x06195827297c7a80a443b6894d3bdb8824b43896': {
|
|
|
|
address: '0x06195827297c7a80a443b6894d3bdb8824b43896',
|
|
|
|
symbol: 'LINK',
|
|
|
|
decimals: 18,
|
|
|
|
name: 'TOKEN-ABC',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
const { toName, isTrusted } = result.current;
|
|
|
|
expect(toName).toBe('TOKEN-ABC');
|
|
|
|
expect(isTrusted).toBe(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return shortened address if address is not presend in any of above sources', () => {
|
|
|
|
const { result } = renderUseAddressDetails(
|
|
|
|
'0x06195827297c7A80a443b6894d3BDB8824b43896',
|
|
|
|
);
|
|
|
|
const { toName, isTrusted } = result.current;
|
|
|
|
expect(toName).toBe('0x061...3896');
|
|
|
|
expect(isTrusted).toBe(false);
|
|
|
|
});
|
|
|
|
});
|