Files
grafana/public/app/plugins/datasource/azuremonitor/components/DefaultSubscription.test.tsx
Ashley Harrison 85e5326040 Chore: Adjust unit tests so they work with react 18 (#64698)
tweak unit tests so they work with react 18
2023-03-14 17:24:04 +00:00

60 lines
2.3 KiB
TypeScript

import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
import { createMockInstanceSetttings } from '../__mocks__/instanceSettings';
import { selectors } from '../e2e/selectors';
import { DefaultSubscription, Props } from './DefaultSubscription';
const mockInstanceSettings = createMockInstanceSetttings();
const defaultProps: Props = {
options: mockInstanceSettings.jsonData,
credentials: {
authType: 'clientsecret',
azureCloud: 'azuremonitor',
tenantId: 'e7f3f661-a933-3h3f-0294-31c4f962ec48',
clientId: '34509fad-c0r9-45df-9e25-f1ee34af6900',
clientSecret: undefined,
},
subscriptions: [],
getSubscriptions: jest.fn().mockResolvedValue([{ label: 'subscriptionId', value: 'subscriptionId' }]),
onSubscriptionsChange: jest.fn(),
onSubscriptionChange: jest.fn(),
};
describe('DefaultSubscription', () => {
it('should render component', () => {
render(<DefaultSubscription {...defaultProps} />);
expect(screen.getByText('Default Subscription')).toBeInTheDocument();
});
it('should disable load subscriptions if credentials are incomplete', () => {
render(<DefaultSubscription {...{ ...defaultProps, credentials: { authType: 'clientsecret' } }} />);
expect(screen.getByTestId(selectors.components.configEditor.loadSubscriptions.button)).toBeDisabled();
});
it('should enable load subscriptions if credentials are complete and set default subscription', async () => {
const props = {
...defaultProps,
credentials: { ...defaultProps.credentials, clientSecret: 'client_secret' },
options: { ...defaultProps.options, subscriptionId: undefined },
};
const { rerender } = render(<DefaultSubscription {...props} />);
expect(screen.getByTestId(selectors.components.configEditor.loadSubscriptions.button)).not.toBeDisabled();
await userEvent.click(screen.getByTestId(selectors.components.configEditor.loadSubscriptions.button));
rerender(
<DefaultSubscription
{...props}
subscriptions={[{ label: 'subscriptionId', value: 'subscriptionId' }]}
options={{ ...defaultProps.options, subscriptionId: 'subscriptionId' }}
/>
);
expect(document.body).toHaveTextContent('subscriptionId');
});
});