import React from 'react';
import { screen } from '@testing-library/react';
import { renderInAppContext } from '@theorchard/suite-testing';
import {
    ApproveSalesFiles,
    type ApproveSalesFilesPropTypes,
} from 'src/components/accounting-period/approve-sales-files';
import { ABACUS_ACTION_STATUSES } from '@theorchard/accounting-apps-shared';

describe('<ApproveSalesFiles>', () => {
    const defaultProps: ApproveSalesFilesPropTypes = {
        actionStatus: ABACUS_ACTION_STATUSES.INIT,
    };

    const render = (props: ApproveSalesFilesPropTypes) =>
        renderInAppContext(<ApproveSalesFiles {...props} />);

    it('renders help icon', () => {
        render(defaultProps);
        expect(screen.getByTestId('approveSalesFilesHelpIcon')).toBeDefined();
    });

    it('renders button in disabled state', () => {
        render(defaultProps);
        expect(screen.getByTestId('approveSalesFilesBtn')).toBeDisabled();
    });

    it('renders not approved state', () => {
        render(defaultProps);
        expect(screen.getByText('APPROVE ALL SALES')).toBeDefined();
    });

    it('renders approved state', () => {
        defaultProps.actionStatus = ABACUS_ACTION_STATUSES.COMPLETE;
        render(defaultProps);
        expect(
            screen.getByTestId('approveSalesFilesApprovedState')
        ).toBeDefined();
        expect(screen.getByText('All Sales Approved')).toBeDefined();
    });
});
