Skip to content

Commit 9778bb7

Browse files
authored
Qa fixes (#1185)
* Hide Add groups button * Update useSimpleTabularView; possible to pass params a funtion * Search on both quest fileds: name and title * Add hook to fetch fhir resources with client side search * fix pagination props passed, and exports * Update careTeam modules to use new changes * Support local search in group management views * Dry out search util function * fix test in react-utils * Update tests in group list * Test view details mapper util in fhir-group-management
1 parent 04bcb3e commit 9778bb7

File tree

20 files changed

+9207
-540
lines changed

20 files changed

+9207
-540
lines changed

packages/fhir-care-team/src/components/ListView/index.tsx

+10-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { RouteComponentProps, useParams } from 'react-router';
77
import { Link } from 'react-router-dom';
88
import {
99
FHIRServiceClass,
10-
useSimpleTabularView,
10+
useTabularViewWithLocalSearch,
1111
BrokenPage,
1212
SearchForm,
1313
TableLayout,
@@ -22,9 +22,9 @@ import {
2222
import { ViewDetails } from '../ViewDetails';
2323
import { Dictionary } from '@onaio/utils';
2424
import { sendErrorNotification, sendSuccessNotification } from '@opensrp/notifications';
25-
import { ICareTeam } from '@smile-cdr/fhirts/dist/FHIR-R4/interfaces/ICareTeam';
2625
import { useTranslation } from '../../mls';
2726
import type { TFunction } from '@opensrp/i18n';
27+
import { ICareTeam } from '@smile-cdr/fhirts/dist/FHIR-R4/interfaces/ICareTeam';
2828

2929
// route params for care team pages
3030
interface RouteParams {
@@ -59,19 +59,19 @@ export const deleteCareTeam = async (
5959
export const CareTeamList: React.FC<CareTeamListPropTypes> = (props: CareTeamListPropTypes) => {
6060
const { fhirBaseURL } = props;
6161
const { t } = useTranslation();
62-
6362
const { careTeamId: resourceId } = useParams<RouteParams>();
64-
const { searchFormProps, tablePaginationProps, queryValues } = useSimpleTabularView<ICareTeam>(
65-
fhirBaseURL,
66-
careTeamResourceType
67-
);
68-
const { data, isFetching, isLoading, error, refetch } = queryValues;
63+
64+
const {
65+
queryValues: { data, isFetching, isLoading, error, refetch },
66+
tablePaginationProps,
67+
searchFormProps,
68+
} = useTabularViewWithLocalSearch<ICareTeam>(fhirBaseURL, careTeamResourceType);
6969

7070
if (error && !data) {
7171
return <BrokenPage errorMessage={(error as Error).message} />;
7272
}
7373

74-
const tableData = (data?.records ?? []).map((datum: Dictionary) => {
74+
const tableData = (data ?? []).map((datum: Dictionary) => {
7575
return {
7676
key: datum.id,
7777
id: datum.id,
@@ -149,7 +149,7 @@ export const CareTeamList: React.FC<CareTeamListPropTypes> = (props: CareTeamLis
149149
<Row className="list-view">
150150
<Col className="main-content">
151151
<div className="main-content__header">
152-
<SearchForm {...searchFormProps} disabled />
152+
<SearchForm {...searchFormProps} />
153153
<Link to={URL_CREATE_CARE_TEAM}>
154154
<Button type="primary">
155155
<PlusOutlined />

packages/fhir-care-team/src/components/ListView/tests/index-rtl.test.tsx

+10-5
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,16 @@ describe('Care Teams list view', () => {
119119
nock(props.fhirBaseURL)
120120
.get(`/${careTeamResourceType}/_search`)
121121
.query({
122-
_getpagesoffset: 0,
123-
_count: 20,
122+
_summary: 'count',
124123
})
125-
.reply(200, careTeams)
126-
.persist();
124+
.reply(200, { total: 100 });
125+
126+
nock(props.fhirBaseURL)
127+
.get(`/${careTeamResourceType}/_search`)
128+
.query({
129+
_count: 100,
130+
})
131+
.reply(200, careTeams);
127132

128133
const history = createMemoryHistory();
129134
history.push(URL_CARE_TEAM);
@@ -152,7 +157,7 @@ describe('Care Teams list view', () => {
152157
// target the initial row view details
153158
const dropdown = document.querySelector(
154159
'tbody tr:nth-child(1) [data-testid="action-dropdown"]'
155-
);
160+
) as Element;
156161
fireEvent.click(dropdown);
157162

158163
const viewDetailsLink = getByText(/View Details/);

packages/fhir-group-management/src/components/BaseComponents/BaseGroupsListView/index.tsx

+17-17
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@ import { Helmet } from 'react-helmet';
33
import { Row, Col, PageHeader, Button } from 'antd';
44
import { parseGroup, ViewDetailsProps, ViewDetailsWrapper } from '../GroupDetail';
55
import { PlusOutlined } from '@ant-design/icons';
6-
import { Group } from '../../../types';
76
import { groupResourceType } from '../../../constants';
87
import { Link } from 'react-router-dom';
98
import { useParams } from 'react-router';
109
import {
1110
SearchForm,
1211
BrokenPage,
1312
TableLayout,
14-
useSimpleTabularView,
1513
Column,
14+
useTabularViewWithLocalSearch,
1615
} from '@opensrp/react-utils';
1716
import { IGroup } from '@smile-cdr/fhirts/dist/FHIR-R4/interfaces/IGroup';
1817
import { useTranslation } from '../../../mls';
@@ -25,7 +24,7 @@ export type BaseListViewProps = Pick<ViewDetailsProps, 'keyValueMapperRenderProp
2524
getColumns: (t: TFunction) => Column<TableData>[];
2625
extraQueryFilters?: Record<string, string>;
2726
createButtonLabel: string;
28-
createButtonUrl: string;
27+
createButtonUrl?: string;
2928
pageTitle: string;
3029
viewDetailsListUrl: string;
3130
};
@@ -55,18 +54,17 @@ export const BaseListView = (props: BaseListViewProps) => {
5554
const { id: resourceId } = useParams<RouteParams>();
5655
const { t } = useTranslation();
5756

58-
const { searchFormProps, tablePaginationProps, queryValues } = useSimpleTabularView<Group>(
59-
fhirBaseURL,
60-
groupResourceType,
61-
extraQueryFilters
62-
);
63-
const { data, isFetching, isLoading, error } = queryValues;
57+
const {
58+
queryValues: { data, isFetching, isLoading, error },
59+
tablePaginationProps,
60+
searchFormProps,
61+
} = useTabularViewWithLocalSearch<IGroup>(fhirBaseURL, groupResourceType, extraQueryFilters);
6462

6563
if (error && !data) {
6664
return <BrokenPage errorMessage={(error as Error).message} />;
6765
}
6866

69-
const tableData = (data?.records ?? []).map((org: IGroup, index: number) => {
67+
const tableData = (data ?? []).map((org: IGroup, index: number) => {
7068
return {
7169
...parseGroup(org),
7270
key: `${index}`,
@@ -91,13 +89,15 @@ export const BaseListView = (props: BaseListViewProps) => {
9189
<Row className="list-view">
9290
<Col className="main-content">
9391
<div className="main-content__header">
94-
<SearchForm data-testid="search-form" {...searchFormProps} disabled />
95-
<Link to={createButtonUrl}>
96-
<Button type="primary">
97-
<PlusOutlined />
98-
{createButtonLabel}
99-
</Button>
100-
</Link>
92+
<SearchForm data-testid="search-form" {...searchFormProps} />
93+
{createButtonUrl && (
94+
<Link to={createButtonUrl}>
95+
<Button type="primary">
96+
<PlusOutlined />
97+
{createButtonLabel}
98+
</Button>
99+
</Link>
100+
)}
101101
</div>
102102
<TableLayout {...tableProps} />
103103
</Col>

0 commit comments

Comments
 (0)