Skip to content
This repository has been archived by the owner on Nov 8, 2024. It is now read-only.

Commit

Permalink
chore: add more tests
Browse files Browse the repository at this point in the history
usamaidrsk committed Nov 6, 2024
1 parent 839e6d4 commit 3d9f51a
Showing 8 changed files with 526 additions and 10 deletions.
File renamed without changes.
4 changes: 3 additions & 1 deletion __mocks__/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
export * from './billingLines.mock';
export * from './billing-lines.mock';
export * from './invoices-response.mock';
export * from './order-response.mock';
25 changes: 25 additions & 0 deletions __mocks__/invoices-response.mock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
export const mockInvoicesResponse = {
data: [
{
name: 'INV-001',
date: '2024-01-01',
payment_state: 'paid',
date_due: '2024-02-01',
invoice_lines: [{ id: 1 }],
},
{
name: 'INV-002',
date: '2024-01-01',
payment_state: 'unpaid',
date_due: '2024-02-01',
invoice_lines: [{ id: 2 }],
},
{
name: 'INV-003',
date: '2024-01-01',
payment_state: 'partial',
date_due: '2024-02-01',
invoice_lines: [{ id: 3 }],
},
],
};
31 changes: 31 additions & 0 deletions __mocks__/order-response.mock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
export const mockOrdersResponse = {
data: [
{
name: 'ORD-001',
date_order: '2024-01-01',
order_lines: [
{
id: 1,
name: 'Not Invoiced',
qty_invoiced: 0,
qty_to_invoice: 1,
invoice_lines: [],
},
{
id: 2,
name: 'Partially Invoiced',
qty_invoiced: 1,
qty_to_invoice: 1,
invoice_lines: [],
},
{
id: 3,
name: 'Fully Invoiced',
qty_invoiced: 1,
qty_to_invoice: 0,
invoice_lines: [],
},
],
},
],
};
2 changes: 1 addition & 1 deletion src/components/billing-status-summary.component.tsx
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ const PatientBillingStatusSummary: React.FC<PatientBillingStatusSummaryProps> =
const displayText = t('billingDetails', 'Billing Details');
const layout = useLayoutType();
const isTablet = layout === 'tablet';
const isDesktop = layout === 'small-desktop' || layout === 'large-desktop';
const isDesktop = !isTablet;

const { groupedLines, isLoading, isValidating, error } = useBillingStatus(patient.id);

4 changes: 4 additions & 0 deletions src/components/billing-status-summary.test.tsx
Original file line number Diff line number Diff line change
@@ -10,6 +10,10 @@ import { mockGroupedLines } from '../../__mocks__';
const mockedUseConfig = jest.mocked(useConfig<Config>);
const mockedUseBillingStatus = jest.mocked(useBillingStatus);

jest.mock('../resources/billing-status.resource', () => ({
useBillingStatus: jest.fn(),
}));

describe('PatientBillingStatusSummary', () => {
beforeEach(() => {
mockedUseConfig.mockReturnValue({
454 changes: 454 additions & 0 deletions src/resources/billing-status-summary.test.ts

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions src/resources/billing-status.resource.ts
Original file line number Diff line number Diff line change
@@ -109,7 +109,7 @@ export const useInvoices = (patientUuid: string, config: Config) => {
};
};

const processBillingLines = (orders: ErpOrder[], invoices: ErpInvoice[], config: Config): BillingLine[] => {
export const processBillingLines = (orders: ErpOrder[], invoices: ErpInvoice[], config: Config): BillingLine[] => {
const lines: BillingLine[] = [];

// Process order lines
@@ -150,7 +150,7 @@ const processBillingLines = (orders: ErpOrder[], invoices: ErpInvoice[], config:
tags.push(BillingCondition.NOT_PAID);
}

if (new Date(invoice.date_due) >= new Date()) {
if (new Date(invoice.invoice_date_due) <= new Date()) {
tags.push(BillingCondition.OVERDUE);
} else {
tags.push(BillingCondition.NOT_OVERDUE);
@@ -193,7 +193,7 @@ const processBillingLines = (orders: ErpOrder[], invoices: ErpInvoice[], config:
.filter((line) => !line.retire);
};

const setVisitToLines = (lines: BillingLine[], visits: BillingVisit[]): BillingLine[] => {
export const setVisitToLines = (lines: BillingLine[], visits: BillingVisit[]): BillingLine[] => {
return lines.map((line) => {
// TODO this matching needs the external_id present on erp order to match the exact visit encounter order
const matchingVisit = visits.find((visit) => line.order === visit.order);
@@ -207,7 +207,7 @@ const setVisitToLines = (lines: BillingLine[], visits: BillingVisit[]): BillingL
});
};

const isLineApproved = (tags: string[], config: Config): boolean => {
export const isLineApproved = (tags: string[], config: Config): boolean => {
return (
config.approvedConditions.some(
(condition) =>
@@ -218,7 +218,7 @@ const isLineApproved = (tags: string[], config: Config): boolean => {
.sort(),
) === JSON.stringify(tags.sort()),
) ||
config.nonApprovedConditions.some(
!config.nonApprovedConditions.some(
(condition) =>
JSON.stringify(
condition
@@ -230,7 +230,7 @@ const isLineApproved = (tags: string[], config: Config): boolean => {
);
};

const shouldRetireLine = (tags: string[], config: Config): boolean => {
export const shouldRetireLine = (tags: string[], config: Config): boolean => {
return config.retireLinesConditions.some(
(condition) =>
JSON.stringify(
@@ -242,7 +242,7 @@ const shouldRetireLine = (tags: string[], config: Config): boolean => {
);
};

const groupByVisits = (lines: BillingLine[]): GroupedBillingLines => {
export const groupByVisits = (lines: BillingLine[]): GroupedBillingLines => {
const groupedLines: GroupedBillingLines = {};

lines.forEach((line) => {
@@ -263,7 +263,7 @@ const groupByVisits = (lines: BillingLine[]): GroupedBillingLines => {
return groupedLines;
};

const groupLinesByDay = (linesToGroup: BillingLine[]): GroupedBillingLines => {
export const groupLinesByDay = (linesToGroup: BillingLine[]): GroupedBillingLines => {
const groupedLines: GroupedBillingLines = {};

linesToGroup.forEach((line) => {

0 comments on commit 3d9f51a

Please sign in to comment.