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 { TableExpandedRowsExtension } from '../tableExpandedRowsExtension';

TableExtensions.addExtension(TableExpandedRowsExtension);

describe('tableExpandedRowsExtension', () => {
    const data: TestData[] = [
        { name: 'row-1', value: 2 },
        { name: 'row-2', value: 1 },
    ];

    const rowContent = 'Expanded row content!';

    const defaultProps: TableProps<TestData> = {
        expandedRows: {
            'row-1': () => <>{rowContent}</>,
        },
        rowKey: 'name',
        data,
    };

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

    describe('with "expandedRows"', () => {
        test('renders expanded row cell content', () => {
            const { getByText } = renderTable();

            const rowCellContent = getByText(rowContent);

            expect(rowCellContent).toBeInTheDocument();
        });
    });
});
