Untitled
unknown
plain_text
4 years ago
2.7 kB
9
Indexable
import React from 'react';
import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { ManageSubaccountPage } from './ManageSubaccountPage';
import { ROUTES } from 'containers/App/routes';
import { renderWithRouter } from 'utils/testHelpers';
const mockedOpenPurchaseDialog = jest.fn();
const mockedOpenCancelPlanDialog = jest.fn();
const mockedHandlePlanSelection = jest.fn();
jest.mock('containers/PurchaseDialog', () => ({
usePurchaseDialog: () => ({
openPurchaseDialog: mockedOpenPurchaseDialog,
}),
}));
jest.mock('containers/ManageBillingPage/useManageBilling', () => ({
useManageBilling: () => ({
handlePlanSelection: mockedHandlePlanSelection,
openCancelPlanDialog: mockedOpenCancelPlanDialog,
}),
}));
describe('ManageSubaccountPage', () => {
test('render component', () => {
renderWithRouter(<ManageSubaccountPage />);
expect(screen.getByText('Manage Subaccounts')).toHaveAttribute(
'href',
ROUTES.subaccounts.path,
);
expect(
screen.getByText('Stop managing this subaccount'),
).toBeInTheDocument();
expect(screen.getByText('Manage Plan')).toBeInTheDocument();
expect(screen.getByText(/Regular Bill Amount/)).toBeInTheDocument();
expect(screen.getByText('$700')).toBeInTheDocument();
expect(
screen.getByRole('heading', { level: 2, name: 'Plan Information' }),
).toBeInTheDocument();
expect(
screen.getByRole('button', { name: 'Downgrade' }),
).toBeInTheDocument();
expect(screen.getByRole('navigation')).toBeInTheDocument();
});
test('open dialog with plan updates', async () => {
renderWithRouter(<ManageSubaccountPage />);
await userEvent.click(
screen.getByRole('button', { name: 'Purchase Plan Extras' }),
);
expect(mockedOpenPurchaseDialog).toHaveBeenCalled();
});
test('downgrade plan action', async () => {
renderWithRouter(<ManageSubaccountPage />);
await userEvent.click(screen.getByRole('button', { name: 'Downgrade' }));
expect(mockedHandlePlanSelection).toHaveBeenCalledWith(
'buttonUrl',
'POST',
true,
false,
);
});
test('cancel app action', async () => {
renderWithRouter(<ManageSubaccountPage />);
await userEvent.click(screen.getAllByRole('button')[1]);
const cancelButton = screen.getByRole('option', {
name: 'Cancel Platform plan',
});
await waitFor(() => userEvent.click(cancelButton));
expect(mockedOpenCancelPlanDialog).toHaveBeenCalledWith(
'platform',
'cancelActionUrl',
undefined, // requireManualBillingOperation
);
});
});
Editor is loading...