diff --git a/cypress/integrations/admin_activities/operations_activities/add_operation_activity.cy.ts b/cypress/integrations/admin_activities/operations_activities/add_operation_activity.cy.ts
new file mode 100644
index 000000000..f7df1e8bf
--- /dev/null
+++ b/cypress/integrations/admin_activities/operations_activities/add_operation_activity.cy.ts
@@ -0,0 +1,55 @@
+///
+
+const OPERATION_STARTS_PATH = "/admin/operations";
+
+describe("Add Operation Activity specs", () => {
+ it("should render the ui", () => {
+ cy.authenticate(OPERATION_STARTS_PATH);
+ cy.dataCy("activity-title").contains("Operations");
+ });
+
+ it("should show operation creation form", () => {
+ cy.dataCy("add-new-operation").click();
+ cy.dataCy("activity-title").contains("Add Operation");
+ });
+
+ it("should fail to create a new operation", () => {
+ cy.byId("code").type("FAIL");
+ cy.byId("type").click();
+ cy.get('.MuiAutocomplete-popper li[data-option-index="0"]').click();
+ cy.byId("description").type("Laparotomy");
+ cy.get('input[name="major"]').check();
+ cy.dataCy("submit-form").click();
+ cy.dataCy("info-box").contains("Fail");
+ });
+
+ it("should successfully create a new operation", () => {
+ cy.byId("code").clear().type("202");
+ cy.dataCy("submit-form").click();
+ cy.dataCy("dialog-info").contains(
+ "Operation has been created successfully!"
+ );
+ cy.dataCy("approve-dialog").click();
+ });
+
+ it("should redirect after operation creation", () => {
+ cy.dataCy("activity-title").contains("Operations");
+ });
+
+ it("should cancel the cancellation of the operation creation", () => {
+ cy.dataCy("add-new-operation").click();
+ cy.dataCy("cancel-form").click();
+ cy.dataCy("dialog-info").contains(
+ "Are you sure to Reset the Form? All the unsaved data will be lost."
+ );
+ cy.dataCy("close-dialog").click();
+ cy.dataCy("dialog-info").should("not.exist");
+ });
+
+ it("should cancel the operation creation", () => {
+ cy.dataCy("cancel-form").click();
+ cy.dataCy("approve-dialog").click();
+ cy.dataCy("dialog-info").should("not.exist");
+ cy.dataCy("activity-title").contains("Operations");
+ });
+});
diff --git a/cypress/integrations/admin_activities/operations_activities/edit_operation_activity.cy.ts b/cypress/integrations/admin_activities/operations_activities/edit_operation_activity.cy.ts
new file mode 100644
index 000000000..46f9c44e4
--- /dev/null
+++ b/cypress/integrations/admin_activities/operations_activities/edit_operation_activity.cy.ts
@@ -0,0 +1,53 @@
+///
+
+const OPERATION_START_PATH = "/admin/operations";
+
+describe("Operations Edit Activity specs", () => {
+ it("should render the ui", () => {
+ cy.authenticate(OPERATION_START_PATH);
+ cy.dataCy("activity-title").contains("Operations");
+ });
+
+ it("should show operation edit form", () => {
+ cy.dataCy("table-edit-action").first().click();
+ cy.dataCy("activity-title").contains("Edit Operation");
+ });
+
+ it("should fail to edit the operation", () => {
+ cy.byId("code").should("be.disabled");
+ cy.get('input[name="major"]').uncheck();
+ cy.get('input[name="major"]').check();
+ cy.byId("type").clear().blur();
+ cy.dataCy("submit-form").click();
+ cy.dataCy("dialog-info").should("not.exist");
+ });
+
+ it("should successfully save operation changes", () => {
+ cy.byId("type").click();
+ cy.get('.MuiAutocomplete-popper li[data-option-index="0"]').click();
+ cy.dataCy("submit-form").click();
+ cy.dataCy("dialog-info").contains("has been updated successfully!");
+ cy.dataCy("approve-dialog").click();
+ });
+
+ it("should redirect after operation update", () => {
+ cy.dataCy("activity-title").contains("Operations");
+ });
+
+ it("should cancel the cancellation of the operation creation", () => {
+ cy.dataCy("table-edit-action").first().click();
+ cy.dataCy("cancel-form").click();
+ cy.dataCy("dialog-info").contains(
+ "Are you sure to Reset the Form? All the unsaved data will be lost."
+ );
+ cy.dataCy("close-dialog").click();
+ cy.dataCy("dialog-info").should("not.be.visible");
+ });
+
+ it("should cancel the operation update", () => {
+ cy.dataCy("cancel-form").click();
+ cy.dataCy("approve-dialog").click();
+ cy.dataCy("dialog-info").should("not.exist");
+ cy.dataCy("activity-title").contains("Operations");
+ });
+});
diff --git a/cypress/integrations/admin_activities/operations_activities/manage_operations_activity.cy.ts b/cypress/integrations/admin_activities/operations_activities/manage_operations_activity.cy.ts
new file mode 100644
index 000000000..7701e352a
--- /dev/null
+++ b/cypress/integrations/admin_activities/operations_activities/manage_operations_activity.cy.ts
@@ -0,0 +1,19 @@
+///
+
+const OPERATIONS_START_PATH = "/admin/operations";
+
+describe("Operations Activity specs", () => {
+ it("should render the ui", () => {
+ cy.authenticate(OPERATIONS_START_PATH);
+ cy.dataCy("activity-title").contains("Operations");
+ });
+
+ it("should present the table with four rows", () => {
+ cy.dataCy("operations-table")
+ .find("table")
+ .then(($table) => {
+ const rows = $table.find("tbody tr");
+ expect(rows.length).equal(4);
+ });
+ });
+});
diff --git a/src/components/accessories/admin/operations/Operations.tsx b/src/components/accessories/admin/operations/Operations.tsx
index e55d94aec..e84c22045 100644
--- a/src/components/accessories/admin/operations/Operations.tsx
+++ b/src/components/accessories/admin/operations/Operations.tsx
@@ -37,7 +37,7 @@ export const Operations = () => {
};
return (
-
+
{
type="button"
variant="contained"
color="primary"
+ dataCy="add-new-operation"
>
{t("operation.addOperation")}
diff --git a/src/components/accessories/admin/operations/operationForm/OperationForm.tsx b/src/components/accessories/admin/operations/operationForm/OperationForm.tsx
index ed364ccf9..537c3a633 100644
--- a/src/components/accessories/admin/operations/operationForm/OperationForm.tsx
+++ b/src/components/accessories/admin/operations/operationForm/OperationForm.tsx
@@ -205,12 +205,18 @@ const OperationForm: FC = ({