diff --git a/e2e/tests/odoo-openmrs-flows.spec.ts b/e2e/tests/odoo-openmrs-flows.spec.ts index 9507dd4..8a6e739 100644 --- a/e2e/tests/odoo-openmrs-flows.spec.ts +++ b/e2e/tests/odoo-openmrs-flows.spec.ts @@ -227,6 +227,63 @@ test('Discontinuing a synced OpenMRS lab order for an Odoo customer with a singl await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(8) span')).toHaveText('Cancelled'); }); +test('Ordering a lab test for an OpenMRS patient with weight creates the weight in the corresponding Odoo customer details.', async ({ page }) => { + // setup + await openmrs.recordWeight(); + + // replay + await page.getByLabel('Order basket').click(); + await expect(page.getByRole('button', { name: 'Add', exact: true }).nth(1)).toBeVisible(); + await page.getByRole('button', { name: 'Add', exact: true }).nth(1).click(); + await page.getByRole('searchbox').fill('Aspirin 325mg'); + await openmrs.fillDrugOrderForm(); + await openmrs.saveDrugOrder(); + + // verify + await odoo.open(); + await odoo.navigateToSales(); + await odoo.searchCustomer(); + await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(4)')).toContainText(`${patientName.firstName + ' ' + patientName.givenName}`); + await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(8) span')).toHaveText('Quotation'); + await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(7) span')).toHaveText('$ 14.88'); + await page.getByRole('cell', { name: `${patientName.firstName + ' ' + patientName.givenName}` }).click(); + await expect(page.locator('.o_group :nth-child(1) tbody :nth-child(3) :nth-child(2)>span')).toContainText('75'); +}); + +test(`Recording a patient's weight in OpenMRS on the second order creates the weight in the corresponding Odoo customer details.`, async ({ page }) => { + // setup + await openmrs.navigateToDrugOrderForm(); + await page.getByRole('searchbox').fill('Aspirin 325mg'); + await openmrs.fillDrugOrderForm(); + await openmrs.saveDrugOrder(); + await odoo.open(); + await odoo.navigateToSales(); + await odoo.searchCustomer(); + await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(4)')).toContainText(`${patientName.firstName + ' ' + patientName.givenName}`); + await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(8) span')).toHaveText('Quotation'); + await page.getByRole('cell', { name: `${patientName.firstName + ' ' + patientName.givenName}` }).click(); + await expect(page.locator('.o_group :nth-child(1) tbody :nth-child(3) :nth-child(2)>span')).toBeEmpty(); + + // replay + await page.goto(`${O3_URL}`); + await openmrs.searchPatient(`${patientName.firstName + ' ' + patientName.givenName}`); + await openmrs.recordWeight(); + await page.getByLabel('Order basket').click(); + await expect(page.getByRole('button', { name: 'Add', exact: true }).nth(2)).toBeVisible(); + await page.getByRole('button', { name: 'Add', exact: true }).nth(2).click(); + await page.getByRole('searchbox').fill('Blood urea nitrogen'); + await openmrs.saveLabOrder(); + + // verify + await page.goto(`${ODOO_URL}`); + await odoo.navigateToSales(); + await odoo.searchCustomer(); + await page.getByRole('cell', { name: `${patientName.firstName + ' ' + patientName.givenName}` }).click(); + await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(2) span:nth-child(1) span')).toHaveText('Aspirin 325mg'); + await expect(page.locator('tr.o_data_row:nth-child(2) td:nth-child(2) span:nth-child(1) span')).toHaveText('Blood urea nitrogen'); + await expect(page.locator('.o_group :nth-child(1) tbody :nth-child(3) :nth-child(2)>span')).toContainText('75'); +}); + test.afterEach(async ({ page }) => { await openmrs.voidPatient(); await openmrs.logout(); diff --git a/e2e/utils/functions/openmrs.ts b/e2e/utils/functions/openmrs.ts index fb5ff93..6790b9e 100644 --- a/e2e/utils/functions/openmrs.ts +++ b/e2e/utils/functions/openmrs.ts @@ -232,6 +232,15 @@ export class OpenMRS { await delay(5000); } + async recordWeight() { + await this.page.getByRole('link', { name: 'Vitals & Biometrics' }).click(); + await this.page.getByRole('button', { name: 'Record biometrics' }).click(); + await this.page.getByRole('spinbutton', { name: 'Weight' }).fill('75'); + await this.page.getByRole('button', { name: 'Save and close' }).click(); + await expect(this.page.getByText('Vitals and Biometrics saved')).toBeVisible(); + await delay(2000); + } + async voidEncounter() { await this.page.getByRole('link', { name: 'Visits' }).click(); await this.page.getByRole('tab', { name: 'All encounters' }).click();