Skip to content

Commit abf92d1

Browse files
committed
prescription test to add and remove medicines
1 parent d58936d commit abf92d1

File tree

6 files changed

+106
-1
lines changed

6 files changed

+106
-1
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { PatientEncounter } from "@/pageObject/Patients/PatientEncounter";
2+
import { FacilityCreation } from "@/pageObject/facility/FacilityCreation";
3+
4+
const facilityCreation = new FacilityCreation();
5+
const patientEncounter = new PatientEncounter();
6+
7+
describe("Patient Prescription Management", () => {
8+
beforeEach(() => {
9+
cy.loginByApi("devnurse");
10+
cy.visit("/");
11+
});
12+
13+
it("should add a new medicine for the patient", () => {
14+
facilityCreation.selectFacility("GHC payyanur");
15+
const medicineName = "Senna 15 mg oral tablet";
16+
const dosage = 6;
17+
const frequency = "BID (1-0-1)";
18+
const instructions = "Until symptoms improve";
19+
const route = "Sublabial route";
20+
const site = "Structure of left deltoid muscle";
21+
const method = "Bathe";
22+
const notes = "testing notes";
23+
patientEncounter
24+
.navigateToEncounters()
25+
.openFirstEncounterDetails()
26+
.clickMedicinesTab()
27+
.clickEditPrescription()
28+
.addMedication(
29+
medicineName,
30+
dosage,
31+
frequency,
32+
instructions,
33+
route,
34+
site,
35+
method,
36+
notes,
37+
);
38+
});
39+
it("should delete prescription", () => {
40+
facilityCreation.selectFacility("GHC payyanur");
41+
42+
patientEncounter
43+
.navigateToEncounters()
44+
.openFirstEncounterDetails()
45+
.clickMedicinesTab()
46+
.clickEditPrescription()
47+
.removeMedication();
48+
});
49+
});

cypress/pageObject/Patients/PatientEncounter.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,56 @@ export class PatientEncounter {
1212
.click();
1313
return this;
1414
}
15+
clickMedicinesTab() {
16+
cy.verifyAndClickElement('[data-cy="tab-medicines"]', "Medicines");
17+
return this;
18+
}
19+
clickEditPrescription() {
20+
cy.verifyAndClickElement('[data-cy="edit-prescription"]', "Edit");
21+
return this;
22+
}
23+
addMedication(
24+
medicineName,
25+
dosage,
26+
frequency,
27+
instructions,
28+
route,
29+
site,
30+
method,
31+
notes,
32+
) {
33+
cy.get('[data-cy="question-medication-request"]').click();
34+
cy.get('[role="listbox"]')
35+
.find('[role="option"]')
36+
.contains(medicineName)
37+
.click();
38+
cy.get('input[inputmode="numeric"]').should("exist").type(dosage);
39+
cy.get('[data-cy="frequency"]').click();
40+
cy.get('[role="option"]').contains(frequency).click();
41+
cy.contains("Select additional instructions").click();
42+
cy.get('[role="listbox"]')
43+
.find('[role="option"]')
44+
.contains(instructions)
45+
.click();
46+
cy.contains("Select route").click();
47+
cy.get('[role="listbox"]').find('[role="option"]').contains(route).click();
48+
cy.contains("Select site").click();
49+
cy.get('[role="listbox"]').find('[role="option"]').contains(site).click();
50+
cy.contains("Select method").click();
51+
cy.get('[role="listbox"]').get('[role="option"]').contains(method).click();
52+
cy.get('[data-cy="notes"]').click();
53+
cy.get('[data-cy="notes-textarea"]').type(notes);
1554

55+
this.clickSubmitQuestionnaire();
56+
this.verifyQuestionnaireSubmission();
57+
return this;
58+
}
59+
removeMedication() {
60+
cy.get('[data-cy="medication-remove"]').first().click();
61+
cy.verifyAndClickElement('[data-cy="confirm-remove-medication"]', "Remove");
62+
this.clickSubmitQuestionnaire();
63+
this.verifyQuestionnaireSubmission();
64+
}
1665
clickUpdateEncounter() {
1766
cy.verifyAndClickElement(
1867
'[data-cy="update-encounter-option"]',

src/components/Medicine/MedicationRequestTable/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ export default function MedicationRequestTable({
158158
variant="outline"
159159
size="sm"
160160
className="text-gray-950 hover:text-gray-700 h-9"
161+
data-cy="edit-prescription"
161162
>
162163
<Link
163164
href={`/facility/${facilityId}/patient/${patientId}/encounter/${encounterId}/questionnaire/medication_request`}

src/components/Questionnaire/QuestionTypes/MedicationRequestQuestion.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ export function MedicationRequestQuestion({
202202
<AlertDialogAction
203203
onClick={confirmRemoveMedication}
204204
className={cn(buttonVariants({ variant: "destructive" }))}
205+
data-cy="confirm-remove-medication"
205206
>
206207
{t("remove")}
207208
</AlertDialogAction>
@@ -317,6 +318,7 @@ export function MedicationRequestQuestion({
317318
medication.status === "entered_in_error"
318319
}
319320
className="h-8 w-8"
321+
data-cy="medication-remove"
320322
>
321323
<MinusCircledIcon className="h-4 w-4" />
322324
</Button>
@@ -619,7 +621,7 @@ const MedicationRequestGridRow: React.FC<MedicationRequestGridRowProps> = ({
619621
}}
620622
disabled={disabled || isReadOnly}
621623
>
622-
<SelectTrigger className="h-9 text-sm">
624+
<SelectTrigger className="h-9 text-sm" data-cy="frequency">
623625
<SelectValue placeholder={t("select_frequency")} />
624626
</SelectTrigger>
625627
<SelectContent>
@@ -879,6 +881,7 @@ const MedicationRequestGridRow: React.FC<MedicationRequestGridRowProps> = ({
879881
onClick={onRemove}
880882
disabled={disabled}
881883
className="h-8 w-8"
884+
data-cy="medication-remove"
882885
>
883886
<MinusCircledIcon className="h-4 w-4" />
884887
</Button>

src/components/Questionnaire/QuestionTypes/NotesInput.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export function NotesInput({
3838
size="sm"
3939
className="h-full w-28 text-sm font-normal text-gray-700 hover:text-gray-900"
4040
disabled={disabled}
41+
data-cy="notes"
4142
>
4243
{hasNotes ? (
4344
<div className="w-1.5 h-1.5 rounded-full bg-orange-400 " />
@@ -54,6 +55,7 @@ export function NotesInput({
5455
className=" border-yellow-200 focus-visible:border-yellow-300 focus-visible:ring-yellow-300"
5556
placeholder="Add notes..."
5657
disabled={disabled}
58+
data-cy="notes-textarea"
5759
/>
5860
</PopoverContent>
5961
</Popover>

src/pages/Encounters/EncounterShow.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ export const EncounterShow = (props: Props) => {
170170
{keysOf(tabs).map((tab) => (
171171
<Link
172172
key={tab}
173+
data-cy={`tab-${tab}`}
173174
className={tabButtonClasses(props.tab === tab)}
174175
href={`/facility/${facilityId}/patient/${patientId}/encounter/${encounterData.id}/${tab}`}
175176
>

0 commit comments

Comments
 (0)