Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Cypress Test | Functionality test of Linking and Unlinking Facility | User Tab #6564

Merged
merged 3 commits into from
Nov 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions cypress/e2e/users_spec/user_creation.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -193,18 +193,6 @@ describe("User Creation", () => {
userPage.verifyMultipleBadgesWithSameId(alreadylinkedusersviews);
});

// the below commented out codes, will be used in the upcoming refactoring of this module, since it is a inter-dependent of partially converted code, currently taking it down

// it("link facility for user", () => {
// cy.contains("Linked Facilities").click();
// cy.intercept(/\/api\/v1\/facility/).as("getFacilities");
// cy.get("[name='facility']")
// .click()
// .type("Dummy Facility 1")
// .wait("@getFacilities");
// cy.get("li[role='option']").should("not.exist");
// });

afterEach(() => {
cy.saveLocalStorage();
});
Expand Down
83 changes: 83 additions & 0 deletions cypress/e2e/users_spec/user_manage.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import { cy, describe, before, beforeEach, it, afterEach } from "local-cypress";
import LoginPage from "../../pageobject/Login/LoginPage";
import { UserPage } from "../../pageobject/Users/UserSearch";
import ManageUserPage from "../../pageobject/Users/ManageUserPage";

describe("Manage User", () => {
const loginPage = new LoginPage();
const userPage = new UserPage();
const manageUserPage = new ManageUserPage();
const usernametolinkfacilitydoc1 = "dummydoctor4";
const usernametolinkfacilitydoc2 = "dummydoctor5";
const usernametolinkfacilitydoc3 = "dummydoctor6";
const usernamerealname = "Dummy Doctor";
const facilitytolinkusername = "Dummy Shifting Center";

before(() => {
loginPage.loginAsDisctrictAdmin();
cy.saveLocalStorage();
});

beforeEach(() => {
cy.restoreLocalStorage();
cy.awaitUrl("/users");
});

it("linking and unlinking facility for multiple users, and confirm reflection in user cards and doctor connect", () => {
// verify the user doesn't have any home facility
userPage.typeInSearchInput(usernametolinkfacilitydoc1);
userPage.checkUsernameText(usernametolinkfacilitydoc1);
manageUserPage.assertHomeFacility("No Home Facility");
// Link a new facility and ensure it is under linked facility - doctor username (1)
manageUserPage.clickFacilitiesTab();
manageUserPage.typeFacilityName(facilitytolinkusername);
manageUserPage.selectFacilityFromDropdown(facilitytolinkusername);
manageUserPage.clickLinkFacility();
manageUserPage.assertLinkedFacility(facilitytolinkusername);
// Verify in the already linked facility are not present in droplist
manageUserPage.assertFacilityNotInDropdown(facilitytolinkusername);
manageUserPage.clickCloseSlideOver();
// Link a new facility and ensure it is under home facility - doctor username (2)
userPage.clearSearchInput();
userPage.typeInSearchInput(usernametolinkfacilitydoc2);
userPage.checkUsernameText(usernametolinkfacilitydoc2);
manageUserPage.clickFacilitiesTab();
manageUserPage.typeFacilityName(facilitytolinkusername);
manageUserPage.selectFacilityFromDropdown(facilitytolinkusername);
manageUserPage.clickLinkFacility();
manageUserPage.clickHomeFacilityIcon();
manageUserPage.assertnotLinkedFacility(facilitytolinkusername);
manageUserPage.assertHomeFacilitylink(facilitytolinkusername);
manageUserPage.clickCloseSlideOver();
// verify the home facility doctor id have reflection in user card
userPage.clearSearchInput();
userPage.typeInSearchInput(usernametolinkfacilitydoc2);
userPage.checkUsernameText(usernametolinkfacilitydoc2);
manageUserPage.assertHomeFacility(facilitytolinkusername);
// Link a new facility and unlink the facility from the doctor username (3)
userPage.clearSearchInput();
userPage.typeInSearchInput(usernametolinkfacilitydoc3);
userPage.checkUsernameText(usernametolinkfacilitydoc3);
manageUserPage.clickFacilitiesTab();
manageUserPage.typeFacilityName(facilitytolinkusername);
manageUserPage.selectFacilityFromDropdown(facilitytolinkusername);
manageUserPage.clickLinkFacility();
manageUserPage.clickUnlinkFacilityButton();
manageUserPage.clickSubmit();
manageUserPage.assertnotLinkedFacility;
manageUserPage.linkedfacilitylistnotvisible();
manageUserPage.clickCloseSlideOver();
// Go to particular facility doctor connect and all user-id are reflected based on there access
// Path will be facility page to patient page then doctor connect button
manageUserPage.navigateToFacility();
manageUserPage.typeFacilitySearch(facilitytolinkusername);
manageUserPage.assertFacilityInCard(facilitytolinkusername);
manageUserPage.clickFacilityPatients();
manageUserPage.clickDoctorConnectButton();
manageUserPage.assertDoctorConnectVisibility(usernamerealname);
});

afterEach(() => {
cy.saveLocalStorage();
});
});
85 changes: 85 additions & 0 deletions cypress/pageobject/Users/ManageUserPage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
export class ManageUserPage {
assertHomeFacility(expectedText) {
cy.get("#home_facility").should("contain.text", expectedText);
}

clickFacilitiesTab() {
cy.get("#facilities").click();
}

typeFacilityName(facilityName) {
cy.get("input[name='facility']").click().type(facilityName);
}

selectFacilityFromDropdown(facilityName) {
cy.get("[role='option']").contains(facilityName).click();
}

clickLinkFacility() {
cy.get("#link-facility").click();
}

assertLinkedFacility(facilityName) {
cy.get("#linked-facility-list").should("contain.text", facilityName);
}

assertnotLinkedFacility(facilityName) {
cy.get("#linked-facility-list").should("not.contain", facilityName);
}

linkedfacilitylistnotvisible() {
cy.get("#linked-facility-list").should("not.exist");
}

assertHomeFacilitylink(facilityName) {
cy.get("#home-facility").should("contain.text", facilityName);
}

assertFacilityNotInDropdown(facilityName) {
this.typeFacilityName(facilityName);
cy.get("[role='option']").should("not.exist");
}

clickCloseSlideOver() {
cy.get("#close-slide-over").click();
}

clickHomeFacilityIcon() {
cy.get("#home-facility-icon").click();
}

clickUnlinkFacilityButton() {
cy.get("#unlink-facility-button").click();
}

clickSubmit() {
cy.get("#submit").click();
}

navigateToFacility() {
cy.visit("/facility");
}

typeFacilitySearch(facilityName) {
cy.get("#search").click().type(facilityName);
}

assertFacilityInCard(facilityName) {
cy.get("#facility-name-card").should("contain", facilityName);
}

clickFacilityPatients() {
cy.get("#facility-patients").click();
}

clickDoctorConnectButton() {
cy.get("#doctor-connect-patient-button").click();
}

assertDoctorConnectVisibility(realName) {
cy.get("#doctor-connect-home-doctor").should("contain.text", realName);
cy.get("#doctor-connect-remote-doctor").should("contain.text", realName);
}
}

export default ManageUserPage;
8 changes: 7 additions & 1 deletion src/Components/Facility/DoctorVideoSlideover.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,13 @@ export default function DoctorVideoSlideover(props: {
home: false,
},
].map((type, i) => (
<div key={i} className="mb-4">
<div
key={i}
className="mb-4"
id={`doctor-connect-${
type.home ? "home" : "remote"
}-${type.user_type.toLowerCase()}`}
>
<div>
<span className="text-lg font-semibold">{type.title}</span>
</div>
Expand Down
5 changes: 4 additions & 1 deletion src/Components/Facility/FacilityCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ export const FacilityCard = (props: { facility: any; userType: any }) => {
{kasp_string}
</div>
)}
<div className="flex flex-wrap items-center justify-between">
<div
className="flex flex-wrap items-center justify-between"
id="facility-name-card"
>
<Link
href={`/facility/${facility.id}`}
className="float-left text-xl font-bold capitalize text-inherit hover:text-inherit"
Expand Down
1 change: 1 addition & 0 deletions src/Components/Facility/FacilityHome.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,7 @@ export const FacilityHome = (props: any) => {
<span className="text-sm">Add Details of a Patient</span>
</ButtonV2>
<ButtonV2
id="view-patient-facility-list"
variant="primary"
ghost
border
Expand Down
1 change: 1 addition & 0 deletions src/Components/Patient/ManagePatients.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -803,6 +803,7 @@ export const PatientManager = () => {
/>
{showDoctorConnect && (
<ButtonV2
id="doctor-connect-patient-button"
onClick={() => {
triggerGoal("Doctor Connect Clicked", {
facilityId: qParams.facility,
Expand Down
6 changes: 4 additions & 2 deletions src/Components/Users/ManageUsers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ function UserFacilities(props: { user: any }) {
<div className="flex flex-col">
{/* Home Facility section */}
{user?.home_facility_object && (
<div className="mt-2">
<div className="mt-2" id="home-facility">
<div className="mb-2 ml-2 text-lg font-bold">Home Facility</div>
<div className="relative rounded p-2 transition hover:bg-gray-200 focus:bg-gray-200 md:rounded-lg">
<div className="flex items-center justify-between">
Expand Down Expand Up @@ -762,7 +762,7 @@ function UserFacilities(props: { user: any }) {

{/* Linked Facilities section */}
{facilities.length > 0 && (
<div className="mt-2">
<div className="mt-2" id="linked-facility-list">
<div className="mb-2 ml-2 text-lg font-bold">
Linked Facilities
</div>
Expand All @@ -785,6 +785,7 @@ function UserFacilities(props: { user: any }) {
<div className="flex items-center gap-2">
<button
className="tooltip text-lg hover:text-primary-500"
id="home-facility-icon"
onClick={() => {
if (user?.home_facility_object) {
// has previous home facility
Expand All @@ -806,6 +807,7 @@ function UserFacilities(props: { user: any }) {
</span>
</button>
<button
id="unlink-facility-button"
className="tooltip text-lg text-red-600"
onClick={() =>
setUnlinkFacilityData({
Expand Down
Loading