import React from 'react';
import { fireEvent, render, screen } from '../../test-utils';
import { ChainOption, ChainSelector, ChainSelectorProps } from '.';
describe('', () => {
const chainOptions: ChainOption[] = [1, 2, 3];
const onChainChangeMock = jest.fn();
afterEach(() => {
jest.clearAllMocks();
});
const renderChainSelector = (props?: Partial) => {
const defaultProps: ChainSelectorProps = {
chainOptions,
onChainChange: onChainChangeMock,
selectedChainId: 1,
};
return render();
};
test('renders chain selector correctly', () => {
renderChainSelector();
const selectorBox = screen.getByTestId('ChainSelector-SelectorBox');
const chainSelectorButton = screen.getByTestId('ChainSelectorButton');
expect(selectorBox).toBeInTheDocument();
expect(chainSelectorButton).toBeInTheDocument();
});
test('renders the selected chain icon', () => {
renderChainSelector();
const selectedChainIcon = screen.getByTestId('ChainSelector-Ethereum');
expect(selectedChainIcon).toBeInTheDocument();
});
test('triggers onChainChange when a chain option is selected', () => {
renderChainSelector();
const openChainSelectorButton = screen.getByTestId('ChainSelectorButton');
fireEvent.click(openChainSelectorButton);
const chainOption = screen.getAllByTestId('ChainOptionButton')[0];
fireEvent.click(chainOption);
expect(onChainChangeMock).toHaveBeenCalledTimes(1);
expect(onChainChangeMock).toHaveBeenCalledWith(2);
});
});