@@ -13,10 +13,11 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render, waitFor } from '@testing-library/react';
|
||||
import { screen, waitFor } from '@testing-library/react';
|
||||
import { PagerDutyChangeEvent } from '../types';
|
||||
import { TestApiRegistry, wrapInTestApp } from '@backstage/test-utils';
|
||||
import { TestApiRegistry, renderInTestApp } from '@backstage/test-utils';
|
||||
import { pagerDutyApiRef } from '../../api';
|
||||
import { ApiProvider } from '@backstage/core-app-api';
|
||||
import { ChangeEvents } from './ChangeEvents';
|
||||
@@ -32,15 +33,15 @@ describe('Incidents', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ change_events: [] }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('No change events to display yet.')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
screen.getByText('No change events to display yet.'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Renders all change events', async () => {
|
||||
@@ -76,19 +77,17 @@ describe('Incidents', () => {
|
||||
},
|
||||
] as PagerDutyChangeEvent[],
|
||||
}));
|
||||
const { getByText, getAllByTitle, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('summary of event')).toBeInTheDocument();
|
||||
expect(getByText('sum of EVENT')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('summary of event')).toBeInTheDocument();
|
||||
expect(screen.getByText('sum of EVENT')).toBeInTheDocument();
|
||||
|
||||
// assert links, mailto and hrefs, date calculation
|
||||
expect(getAllByTitle('View in PagerDuty').length).toEqual(2);
|
||||
expect(screen.getAllByTitle('View in PagerDuty').length).toEqual(2);
|
||||
});
|
||||
|
||||
it('Does not render a pagerduty link when html_url is not present in response', async () => {
|
||||
@@ -123,19 +122,17 @@ describe('Incidents', () => {
|
||||
},
|
||||
] as PagerDutyChangeEvent[],
|
||||
}));
|
||||
const { getByText, getAllByTitle, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('summary of event')).toBeInTheDocument();
|
||||
expect(getByText('sum of EVENT')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('summary of event')).toBeInTheDocument();
|
||||
expect(screen.getByText('sum of EVENT')).toBeInTheDocument();
|
||||
|
||||
// assert links, mailto and hrefs, date calculation
|
||||
expect(getAllByTitle('View in PagerDuty').length).toEqual(1);
|
||||
expect(screen.getAllByTitle('View in PagerDuty').length).toEqual(1);
|
||||
});
|
||||
|
||||
it('Handle errors', async () => {
|
||||
@@ -143,16 +140,16 @@ describe('Incidents', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('Error occurred'));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<ChangeEvents serviceId="abc" refreshEvents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
getByText('Error encountered while fetching information. Error occurred'),
|
||||
screen.getByText(
|
||||
'Error encountered while fetching information. Error occurred',
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,8 +13,9 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render, waitFor, fireEvent, act } from '@testing-library/react';
|
||||
import { screen, waitFor, fireEvent, act } from '@testing-library/react';
|
||||
import {
|
||||
EntityPagerDutyCard,
|
||||
isPluginApplicableToEntity,
|
||||
@@ -22,7 +23,7 @@ import {
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
import { EntityProvider } from '@backstage/plugin-catalog-react';
|
||||
import { NotFoundError } from '@backstage/errors';
|
||||
import { TestApiRegistry, wrapInTestApp } from '@backstage/test-utils';
|
||||
import { TestApiRegistry, renderInTestApp } from '@backstage/test-utils';
|
||||
import { pagerDutyApiRef, UnauthorizedError, PagerDutyClient } from '../../api';
|
||||
import { PagerDutyService, PagerDutyUser } from '../types';
|
||||
|
||||
@@ -136,20 +137,18 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Handles custom error for missing token', async () => {
|
||||
@@ -157,17 +156,17 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new UnauthorizedError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Missing or invalid PagerDuty Token')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
screen.getByText('Missing or invalid PagerDuty Token'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Handles custom NotFoundError', async () => {
|
||||
@@ -175,36 +174,32 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new NotFoundError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('PagerDuty Service Not Found')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('PagerDuty Service Not Found')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('handles general error', async () => {
|
||||
mockPagerDutyApi.getServiceByPagerDutyEntity = jest
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('An error occurred'));
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(
|
||||
getByText(
|
||||
screen.getByText(
|
||||
'Error encountered while fetching information. An error occurred',
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
@@ -215,23 +210,21 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId, getByRole } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entity}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
|
||||
const triggerLink = getByText('Create Incident');
|
||||
const triggerLink = screen.getByText('Create Incident');
|
||||
await act(async () => {
|
||||
fireEvent.click(triggerLink);
|
||||
});
|
||||
expect(getByRole('dialog')).toBeInTheDocument();
|
||||
expect(screen.getByRole('dialog')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
describe('when entity has the pagerduty.com/service-id annotation', () => {
|
||||
@@ -240,20 +233,18 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Handles custom error for missing token', async () => {
|
||||
@@ -261,18 +252,16 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new UnauthorizedError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
getByText('Missing or invalid PagerDuty Token'),
|
||||
screen.getByText('Missing or invalid PagerDuty Token'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -281,36 +270,34 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new NotFoundError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('PagerDuty Service Not Found')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
screen.getByText('PagerDuty Service Not Found'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('handles general error', async () => {
|
||||
mockPagerDutyApi.getServiceByPagerDutyEntity = jest
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('An error occurred'));
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(
|
||||
getByText(
|
||||
screen.getByText(
|
||||
'Error encountered while fetching information. An error occurred',
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
@@ -321,18 +308,16 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { queryByTestId, getByTitle } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithServiceId}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
getByTitle('Must provide an integration-key to create incidents')
|
||||
screen.getByTitle('Must provide an integration-key to create incidents')
|
||||
.className,
|
||||
).toMatch('disabled');
|
||||
});
|
||||
@@ -344,20 +329,18 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithAllAnnotations}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithAllAnnotations}>
|
||||
<EntityPagerDutyCard />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -367,20 +350,18 @@ describe('EntityPagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithAllAnnotations}>
|
||||
<EntityPagerDutyCard readOnly />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EntityProvider entity={entityWithAllAnnotations}>
|
||||
<EntityPagerDutyCard readOnly />
|
||||
</EntityProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
expect(() => getByText('Create Incident')).toThrow();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
expect(() => screen.getByText('Create Incident')).toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,10 +13,11 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render, waitFor } from '@testing-library/react';
|
||||
import { screen, waitFor } from '@testing-library/react';
|
||||
import { EscalationPolicy } from './EscalationPolicy';
|
||||
import { TestApiRegistry, wrapInTestApp } from '@backstage/test-utils';
|
||||
import { TestApiRegistry, renderInTestApp } from '@backstage/test-utils';
|
||||
import { PagerDutyUser } from '../types';
|
||||
import { pagerDutyApiRef } from '../../api';
|
||||
import { ApiProvider } from '@backstage/core-app-api';
|
||||
@@ -32,16 +33,14 @@ describe('Escalation', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ oncalls: [] }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EscalationPolicy policyId="456" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EscalationPolicy policyId="456" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
expect(mockPagerDutyApi.getOnCallByPolicyId).toHaveBeenCalledWith('456');
|
||||
});
|
||||
|
||||
@@ -62,17 +61,15 @@ describe('Escalation', () => {
|
||||
],
|
||||
}));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EscalationPolicy policyId="abc" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EscalationPolicy policyId="abc" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(getByText('person1')).toBeInTheDocument();
|
||||
expect(getByText('person1@example.com')).toBeInTheDocument();
|
||||
expect(screen.getByText('person1')).toBeInTheDocument();
|
||||
expect(screen.getByText('person1@example.com')).toBeInTheDocument();
|
||||
expect(mockPagerDutyApi.getOnCallByPolicyId).toHaveBeenCalledWith('abc');
|
||||
});
|
||||
|
||||
@@ -81,17 +78,17 @@ describe('Escalation', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('Error message'));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EscalationPolicy policyId="abc" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<EscalationPolicy policyId="abc" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(
|
||||
getByText('Error encountered while fetching information. Error message'),
|
||||
screen.getByText(
|
||||
'Error encountered while fetching information. Error message',
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render, screen, waitFor } from '@testing-library/react';
|
||||
import { screen, waitFor } from '@testing-library/react';
|
||||
import { Incidents } from './Incidents';
|
||||
import { TestApiRegistry, wrapInTestApp } from '@backstage/test-utils';
|
||||
import { TestApiRegistry, renderInTestApp } from '@backstage/test-utils';
|
||||
import { pagerDutyApiRef } from '../../api';
|
||||
import { PagerDutyIncident } from '../types';
|
||||
import { ApiProvider } from '@backstage/core-app-api';
|
||||
@@ -33,12 +33,10 @@ describe('Incidents', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ incidents: [] }));
|
||||
|
||||
render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<Incidents serviceId="abc" refreshIncidents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<Incidents serviceId="abc" refreshIncidents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
@@ -86,12 +84,10 @@ describe('Incidents', () => {
|
||||
},
|
||||
] as PagerDutyIncident[],
|
||||
}));
|
||||
render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<Incidents serviceId="abc" refreshIncidents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<Incidents serviceId="abc" refreshIncidents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('title1')).toBeInTheDocument();
|
||||
@@ -112,12 +108,10 @@ describe('Incidents', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('Error occurred'));
|
||||
|
||||
render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<Incidents serviceId="abc" refreshIncidents={false} />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<Incidents serviceId="abc" refreshIncidents={false} />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
|
||||
@@ -13,11 +13,12 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render, waitFor, fireEvent, act } from '@testing-library/react';
|
||||
import { screen, waitFor, fireEvent, act } from '@testing-library/react';
|
||||
import { PagerDutyCard } from '../PagerDutyCard';
|
||||
import { NotFoundError } from '@backstage/errors';
|
||||
import { TestApiRegistry, wrapInTestApp } from '@backstage/test-utils';
|
||||
import { TestApiRegistry, renderInTestApp } from '@backstage/test-utils';
|
||||
import { pagerDutyApiRef, UnauthorizedError, PagerDutyClient } from '../../api';
|
||||
import { PagerDutyService, PagerDutyUser } from '../types';
|
||||
|
||||
@@ -61,18 +62,16 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Handles custom error for missing token', async () => {
|
||||
@@ -80,15 +79,15 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new UnauthorizedError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Missing or invalid PagerDuty Token')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
screen.getByText('Missing or invalid PagerDuty Token'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Handles custom NotFoundError', async () => {
|
||||
@@ -96,32 +95,28 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new NotFoundError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('PagerDuty Service Not Found')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('PagerDuty Service Not Found')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('handles general error', async () => {
|
||||
mockPagerDutyApi.getServiceByPagerDutyEntity = jest
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('An error occurred'));
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(
|
||||
getByText(
|
||||
screen.getByText(
|
||||
'Error encountered while fetching information. An error occurred',
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
@@ -132,21 +127,19 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId, getByRole } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
|
||||
const triggerLink = getByText('Create Incident');
|
||||
const triggerLink = screen.getByText('Create Incident');
|
||||
await act(async () => {
|
||||
fireEvent.click(triggerLink);
|
||||
});
|
||||
expect(getByRole('dialog')).toBeInTheDocument();
|
||||
expect(screen.getByRole('dialog')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
describe('when entity has the pagerduty.com/service-id annotation', () => {
|
||||
@@ -155,18 +148,16 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" integrationKey="abc123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Handles custom error for missing token', async () => {
|
||||
@@ -174,20 +165,18 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new UnauthorizedError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
getByText('Missing or invalid PagerDuty Token'),
|
||||
screen.getByText('Missing or invalid PagerDuty Token'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -196,40 +185,38 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new NotFoundError());
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('PagerDuty Service Not Found')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
screen.getByText('PagerDuty Service Not Found'),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('handles general error', async () => {
|
||||
mockPagerDutyApi.getServiceByPagerDutyEntity = jest
|
||||
.fn()
|
||||
.mockRejectedValueOnce(new Error('An error occurred'));
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
|
||||
expect(
|
||||
getByText(
|
||||
screen.getByText(
|
||||
'Error encountered while fetching information. An error occurred',
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
@@ -240,16 +227,14 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { queryByTestId, getByTitle } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" serviceId="def123" />
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard name="blah" serviceId="def123" />
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(
|
||||
getByTitle('Must provide an integration-key to create incidents')
|
||||
screen.getByTitle('Must provide an integration-key to create incidents')
|
||||
.className,
|
||||
).toMatch('disabled');
|
||||
});
|
||||
@@ -261,22 +246,20 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
/>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Create Incident')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -286,23 +269,21 @@ describe('PagerDutyCard', () => {
|
||||
.fn()
|
||||
.mockImplementationOnce(async () => ({ service }));
|
||||
|
||||
const { getByText, queryByTestId } = render(
|
||||
wrapInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
readOnly
|
||||
/>
|
||||
</ApiProvider>,
|
||||
),
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={apis}>
|
||||
<PagerDutyCard
|
||||
name="blah"
|
||||
integrationKey="abc123"
|
||||
serviceId="def123"
|
||||
readOnly
|
||||
/>
|
||||
</ApiProvider>,
|
||||
);
|
||||
await waitFor(() => !queryByTestId('progress'));
|
||||
expect(getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
expect(() => getByText('Create Incident')).toThrow();
|
||||
await waitFor(() => !screen.queryByTestId('progress'));
|
||||
expect(screen.getByText('Service Directory')).toBeInTheDocument();
|
||||
expect(screen.getByText('Nice! No incidents found!')).toBeInTheDocument();
|
||||
expect(screen.getByText('Empty escalation policy')).toBeInTheDocument();
|
||||
expect(() => screen.getByText('Create Incident')).toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user