forked from openmrs/openmrs-esm-admin-tools
/
import-items.test.tsx
89 lines (75 loc) · 2.74 KB
/
import-items.test.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import React from 'react';
import { screen, waitFor } from '@testing-library/react';
import { usePagination } from '@openmrs/esm-framework';
import { renderWithSwr } from '../../../../../tools/test-helpers';
import { mockImportItems, mockPreviousImports } from '../../../../../__mocks__/openconceptlab.mock';
import { ImportItem } from '../../types';
import ImportItems from './import-items.component';
import { getImportDetails } from './import-items.resource';
const mockGetImportDetails = getImportDetails as jest.Mock;
const mockUsePagination = usePagination as jest.Mock;
jest.mock('./import-items.resource', () => {
const originalModule = jest.requireActual('./import-items.resource');
return {
...originalModule,
getImportDetails: jest.fn(),
};
});
jest.mock('@openmrs/esm-framework', () => {
const originalModule = jest.requireActual('@openmrs/esm-framework');
return {
...originalModule,
usePagination: jest.fn(),
};
});
describe(`Import Items component`, () => {
afterEach(() => {
mockGetImportDetails.mockReset();
mockUsePagination.mockReset();
});
it(`renders without dying`, () => {
mockGetImportDetails.mockReturnValue({ status: 200, ok: true, data: [] });
mockUsePagination.mockReturnValue({
currentPage: 1,
goTo: () => {},
results: [],
});
renderImportItemsComponent();
});
it(`renders the table`, async () => {
mockGetImportDetails.mockReturnValue({ status: 200, ok: true, data: mockImportItems });
mockUsePagination.mockReturnValue({
currentPage: 1,
goTo: () => {},
results: mockImportItems,
});
renderImportItemsComponent();
await waitForLoadingToFinish();
expect(screen.getByText('Concept/Mapping')).toBeVisible();
expect(screen.getByText('Message')).toBeVisible();
});
it(`renders the import items correctly`, async () => {
mockGetImportDetails.mockReturnValue({ status: 200, ok: true, data: mockImportItems });
mockUsePagination.mockReturnValue({
currentPage: 1,
goTo: () => {},
results: mockImportItems,
});
renderImportItemsComponent();
await waitForLoadingToFinish();
expect(screen.getByText('Concept/Mapping')).toBeVisible();
expect(screen.getByText('Message')).toBeVisible();
mockImportItems.slice(5).forEach((importItem: ImportItem) => {
expect(screen.getByText(importItem.type + ' ' + importItem.uuid)).toBeVisible();
expect(screen.getByText(importItem.errorMessage)).toBeVisible();
});
});
});
function renderImportItemsComponent() {
renderWithSwr(<ImportItems importUuid={mockPreviousImports[1].uuid} />);
}
function waitForLoadingToFinish() {
return waitFor(() => {
expect(screen.getByText('Concept/Mapping')).toBeVisible(), { timeout: 2000 };
});
}