import React from 'react';
import { screen } from '@testing-library/react';
import { Identity } from '@theorchard/suite-frontend';
import { createIdentity, renderInAppContext } from '@theorchard/suite-testing';
import * as vatRatesResponse from 'src/__fixtures__/graphql/reference-vat-rates-response.json';
import { VatRates, VatRatesPropType } from 'src/components/reference/vat-rates';

describe('<VatRates>', () => {
    const props: VatRatesPropType = {
        rateList: vatRatesResponse.abacusReferenceVatRates
            .items as VatRatesPropType['rateList'],
        isLoading: false,
    };
    const render = (mockIdentity?: Partial<Identity>) =>
        renderInAppContext(<VatRates {...props} />, {
            identity: createIdentity(mockIdentity),
        });

    it('renders UK VAT Rates', () => {
        render();
        expect(screen.getByText('UK VAT Rates')).toBeDefined();
        expect(screen.getByText('Effective Date')).toBeDefined();
        expect(screen.getByText('Country of Signing Entity')).toBeDefined();
        expect(
            screen.getByText(
                'Account VAT Registered in Country of signing entity?'
            )
        ).toBeDefined();
        expect(screen.getByText('Transaction Type')).toBeDefined();
        expect(screen.getByText('Tax Applicable?')).toBeDefined();

        expect(screen.getAllByText('2002-05-10').length).toEqual(2);
        expect(screen.getAllByText('United Kingdom').length).toEqual(2);
        expect(screen.getAllByText('Yes').length).toEqual(3);
        expect(screen.getByText('All')).toBeDefined();
    });
});
