2021-02-04 19:15:23 +01:00
|
|
|
import React from 'react';
|
|
|
|
import configureMockStore from 'redux-mock-store';
|
|
|
|
import thunk from 'redux-thunk';
|
2022-08-03 22:30:43 +02:00
|
|
|
import { screen } from '@testing-library/react';
|
|
|
|
import { renderWithProvider } from '../../../../test/lib/render-helpers';
|
2021-11-22 17:24:42 +01:00
|
|
|
import { LOCALHOST_RPC_URL } from '../../../../shared/constants/network';
|
2021-03-16 22:00:08 +01:00
|
|
|
import NetworkDropdown from './network-dropdown';
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-04-15 20:01:46 +02:00
|
|
|
describe('Network Dropdown', () => {
|
2021-02-04 19:15:23 +01:00
|
|
|
const createMockStore = configureMockStore([thunk]);
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-04-15 20:01:46 +02:00
|
|
|
describe('NetworkDropdown in appState in false', () => {
|
2018-09-24 18:28:04 +02:00
|
|
|
const mockState = {
|
|
|
|
metamask: {
|
2020-01-16 04:33:37 +01:00
|
|
|
network: '1',
|
2018-09-24 18:28:04 +02:00
|
|
|
provider: {
|
|
|
|
type: 'test',
|
|
|
|
},
|
2022-05-31 18:46:38 +02:00
|
|
|
showTestnetMessageInDropdown: false,
|
2021-10-28 21:31:05 +02:00
|
|
|
preferences: {
|
|
|
|
showTestNetworks: true,
|
|
|
|
},
|
2018-09-24 18:28:04 +02:00
|
|
|
},
|
|
|
|
appState: {
|
2020-01-16 04:33:37 +01:00
|
|
|
networkDropdownOpen: false,
|
2018-09-24 18:28:04 +02:00
|
|
|
},
|
2021-02-04 19:15:23 +01:00
|
|
|
};
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-02-04 19:15:23 +01:00
|
|
|
const store = createMockStore(mockState);
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-04-15 20:01:46 +02:00
|
|
|
beforeEach(() => {
|
2022-08-03 22:30:43 +02:00
|
|
|
renderWithProvider(<NetworkDropdown />, store);
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2022-08-03 22:30:43 +02:00
|
|
|
it('should not render menu dropdown when network dropdown is in false state', () => {
|
|
|
|
const menuDropdown = screen.queryByTestId('menu-dropdown');
|
|
|
|
expect(menuDropdown).not.toBeInTheDocument();
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2022-08-03 22:30:43 +02:00
|
|
|
it('checks for network droppo class', () => {
|
|
|
|
const networkDropdown = screen.queryByTestId('network-droppo');
|
|
|
|
expect(networkDropdown).toBeInTheDocument();
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
|
|
|
});
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-10-28 21:31:05 +02:00
|
|
|
describe('NetworkDropdown in appState is true and show test networks is true', () => {
|
2018-09-24 18:28:04 +02:00
|
|
|
const mockState = {
|
|
|
|
metamask: {
|
2020-01-16 04:33:37 +01:00
|
|
|
network: '1',
|
2018-09-24 18:28:04 +02:00
|
|
|
provider: {
|
2020-11-03 00:41:28 +01:00
|
|
|
type: 'test',
|
2018-09-24 18:28:04 +02:00
|
|
|
},
|
2022-05-31 18:46:38 +02:00
|
|
|
showTestnetMessageInDropdown: false,
|
2021-10-28 21:31:05 +02:00
|
|
|
preferences: {
|
|
|
|
showTestNetworks: true,
|
|
|
|
},
|
2018-10-26 10:26:43 +02:00
|
|
|
frequentRpcListDetail: [
|
2020-10-06 19:57:02 +02:00
|
|
|
{ chainId: '0x1a', rpcUrl: 'http://localhost:7545' },
|
|
|
|
{ rpcUrl: 'http://localhost:7546' },
|
2021-11-22 17:24:42 +01:00
|
|
|
{ rpcUrl: LOCALHOST_RPC_URL, nickname: 'localhost' },
|
2018-09-24 18:28:04 +02:00
|
|
|
],
|
|
|
|
},
|
|
|
|
appState: {
|
2020-11-03 00:41:28 +01:00
|
|
|
networkDropdownOpen: true,
|
2018-09-24 18:28:04 +02:00
|
|
|
},
|
2021-02-04 19:15:23 +01:00
|
|
|
};
|
2021-10-28 21:31:05 +02:00
|
|
|
|
|
|
|
global.platform = {
|
|
|
|
openExtensionInBrowser: jest.fn(),
|
|
|
|
};
|
|
|
|
|
2021-02-04 19:15:23 +01:00
|
|
|
const store = createMockStore(mockState);
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2022-08-03 22:30:43 +02:00
|
|
|
beforeEach(() => {
|
|
|
|
renderWithProvider(<NetworkDropdown />, store);
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-04-15 20:01:46 +02:00
|
|
|
it('checks background color for first ColorIndicator', () => {
|
2022-08-03 22:30:43 +02:00
|
|
|
const mainnetColorIndicator = screen.queryByTestId('color-icon-mainnet');
|
|
|
|
expect(mainnetColorIndicator).toBeInTheDocument();
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-04-15 20:01:46 +02:00
|
|
|
it('checks background color for fourth ColorIndicator', () => {
|
2022-08-03 22:30:43 +02:00
|
|
|
const goerliColorIndicator = screen.queryByTestId('color-icon-goerli');
|
|
|
|
expect(goerliColorIndicator).toBeInTheDocument();
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2019-04-17 19:34:49 +02:00
|
|
|
|
2022-09-29 05:26:01 +02:00
|
|
|
it('checks background color for fifth ColorIndicator', () => {
|
2022-09-14 20:26:45 +02:00
|
|
|
const sepoliaColorIndicator = screen.queryByTestId('color-icon-sepolia');
|
|
|
|
expect(sepoliaColorIndicator).toBeInTheDocument();
|
|
|
|
});
|
|
|
|
|
2022-09-29 05:26:01 +02:00
|
|
|
it('checks background color for sixth ColorIndicator', () => {
|
2022-08-03 22:30:43 +02:00
|
|
|
const localhostColorIndicator = screen.queryByTestId(
|
|
|
|
'color-icon-localhost',
|
|
|
|
);
|
|
|
|
expect(localhostColorIndicator).toBeInTheDocument();
|
2021-10-28 21:31:05 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
it('checks that Add Network button is rendered', () => {
|
2022-08-08 21:01:38 +02:00
|
|
|
const addNetworkButton = screen.queryByText('Add network');
|
2022-08-03 22:30:43 +02:00
|
|
|
expect(addNetworkButton).toBeInTheDocument();
|
2021-10-28 21:31:05 +02:00
|
|
|
});
|
2022-01-05 20:04:34 +01:00
|
|
|
|
|
|
|
it('shows test networks in the dropdown', () => {
|
2022-08-03 22:30:43 +02:00
|
|
|
const networkItems = screen.queryAllByTestId(/network-item/u);
|
|
|
|
|
2022-09-29 05:26:01 +02:00
|
|
|
expect(networkItems).toHaveLength(6);
|
2022-01-05 20:04:34 +01:00
|
|
|
});
|
2021-10-28 21:31:05 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
describe('NetworkDropdown in appState is true and show test networks is false', () => {
|
|
|
|
const mockState = {
|
|
|
|
metamask: {
|
|
|
|
network: '1',
|
|
|
|
provider: {
|
|
|
|
type: 'test',
|
|
|
|
},
|
2022-05-31 18:46:38 +02:00
|
|
|
showTestnetMessageInDropdown: false,
|
2021-10-28 21:31:05 +02:00
|
|
|
preferences: {
|
|
|
|
showTestNetworks: false,
|
|
|
|
},
|
|
|
|
frequentRpcListDetail: [
|
|
|
|
{ chainId: '0x1a', rpcUrl: 'http://localhost:7545' },
|
|
|
|
{ rpcUrl: 'http://localhost:7546' },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
appState: {
|
|
|
|
networkDropdownOpen: true,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
global.platform = {
|
|
|
|
openExtensionInBrowser: jest.fn(),
|
|
|
|
};
|
|
|
|
|
|
|
|
const store = createMockStore(mockState);
|
|
|
|
|
2022-08-03 22:30:43 +02:00
|
|
|
beforeEach(() => {
|
|
|
|
renderWithProvider(<NetworkDropdown />, store);
|
2021-10-28 21:31:05 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
it('checks background color for first ColorIndicator', () => {
|
2022-08-03 22:30:43 +02:00
|
|
|
const mainnetColorIndicator = screen.queryByTestId('color-icon-mainnet');
|
|
|
|
expect(mainnetColorIndicator).toBeInTheDocument();
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2018-09-24 18:28:04 +02:00
|
|
|
|
2021-10-28 21:31:05 +02:00
|
|
|
it('checks that Add Network button is rendered', () => {
|
2022-08-08 21:01:38 +02:00
|
|
|
const addNetworkButton = screen.queryByText('Add network');
|
2022-08-03 22:30:43 +02:00
|
|
|
expect(addNetworkButton).toBeInTheDocument();
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
2022-01-05 20:04:34 +01:00
|
|
|
|
|
|
|
it('does not show test networks in the dropdown', () => {
|
2022-08-03 22:30:43 +02:00
|
|
|
const networkItems = screen.queryAllByTestId(/network-item/u);
|
|
|
|
|
|
|
|
expect(networkItems).toHaveLength(3);
|
2022-01-05 20:04:34 +01:00
|
|
|
});
|
2021-02-04 19:15:23 +01:00
|
|
|
});
|
|
|
|
});
|