import React from 'react';
import { fireEvent, screen } from '@testing-library/react';
import { renderInAppContext } from '@theorchard/suite-testing';
import UndoLink, {
    UndoLinkPropType,
} from 'src/components/shared/swap-items/undo-link';

describe('<UndoLink>', () => {
    const defaultProps = {
        undoMessage: '1 Country Moved',
        undoHandler: jest.fn(),
    };
    const render = (props: UndoLinkPropType) =>
        renderInAppContext(<UndoLink {...props} />);

    it('renders <UndoLink>', () => {
        render(defaultProps);
        expect(screen.getByText('1 Country Moved')).toBeDefined();
    });

    it('handler is called on click of "Undo" link', () => {
        render(defaultProps);
        const undoLink = screen.getByTestId('ItemList-UndoLink');
        fireEvent.click(undoLink);
        expect(defaultProps.undoHandler).toHaveBeenCalled();
    });

    it('disables "Undo" link', () => {
        render({ ...defaultProps, isDisabled: true });
        const undoLink = screen.getByTestId('ItemList-UndoLink');
        expect(undoLink).toHaveClass('ItemList-LinkDisable');
    });
});
