import React from 'react';
import { render } from '@testing-library/react';
import { TestData } from 'lib/test-utils/table';
import { GridTable } from '../../../base/table';
import { TableExtensions } from '../../../base/tableExtensions';
import { TableProps } from '../../../base/types';
import { TablePaginationTextExtension } from '../tablePaginationTextExtension';

TableExtensions.addExtension(TablePaginationTextExtension);

describe('TablePaginationTextExtension', () => {
    const data: TestData[] = [
        { name: 'test1', value: 2 },
        { name: 'test2', value: 1 },
    ];

    const renderTable = (props: Partial<TableProps<TestData>> = {}) =>
        render(<GridTable data={data} {...props} />);

    test('renders pagination text when prop is passed', () => {
        const { getByTestId } = renderTable({
            rowKey: 'name',
            paginationText: 'some pagination text',
        });

        const element = getByTestId('TablePaginationText');
        expect(element).toBeInTheDocument();
    });

    test('does not render pagination text when there are selected rows', () => {
        const { queryByTestId } = renderTable({
            rowKey: 'name',
            selectedRowKeys: ['test1'],
            paginationText: 'some pagination text',
        });

        const element = queryByTestId('TablePaginationText');
        expect(element).toBeNull();
    });
});
