import React from 'react';
import { renderInAppContext } from '@theorchard/suite-testing';
import ShowFileReport, { CLASSNAME } from '../showFileReport';
import type { ProgressReport } from 'src/data/queries/getNrIngestionFileProgress/types';

describe('<ShowFileReport>', () => {
    const reportGenerationComplete = {
        lastModified: '2022-03-25T05:46:16.000Z',
        filename: '2c07925f-7cbb-4103-b444-c496507b8988.csv',
        errorFileUrl:
            'https://qa-neighbouring-rights.s3.us-east-1.amazonaws.com/&x-id=GetObject',
        errorRows: 1,
        successFileUrl: '',
        successRows: 1,
        totalRows: 2,
        __typename: 'NRIngestionFile',
    } as unknown as ProgressReport;

    const renderComponent = () =>
        renderInAppContext(
            <ShowFileReport report={reportGenerationComplete} />
        );

    test('renders success count and download button.', () => {
        const { container } = renderComponent();

        expect(
            container.getElementsByClassName(CLASSNAME).item(0)
        ).toBeVisible();
        expect(
            container
                .getElementsByClassName(`${CLASSNAME}-count-success`)
                .item(0)
        ).toBeVisible();
        expect(
            container
                .getElementsByClassName(`${CLASSNAME}-download-button`)
                .item(0)
        ).toBeVisible();
    });
});
describe('<ShowFileReport> without any errors', () => {
    const reportGenerationComplete = {
        lastModified: '2022-03-25T05:46:16.000Z',
        filename: '2c07925f-7cbb-4103-b444-c496507b8988.csv',
        errorFileUrl: '',
        errorRows: 0,
        successFileUrl:
            'https://qa-neighbouring-rights.s3.us-east-1.amazonaws.com/&x-id=GetObject',
        successRows: 2,
        totalRows: 2,
        __typename: 'NRIngestionFile',
    } as unknown as ProgressReport;

    const renderComponent = () =>
        renderInAppContext(
            <ShowFileReport report={reportGenerationComplete} />
        );

    test('renders success and error counts but no download button.', () => {
        const { container } = renderComponent();

        expect(
            container.getElementsByClassName(CLASSNAME).item(0)
        ).toBeVisible();
        expect(
            container
                .getElementsByClassName(`${CLASSNAME}-count-success`)
                .item(0)
        ).toBeVisible();
        expect(
            container.getElementsByClassName(`${CLASSNAME}-count-error`).item(0)
        ).toBeVisible();
        expect(
            container.getElementsByClassName(`${CLASSNAME}-download-button`)
                .length
        ).toEqual(0);
    });
});
