diff --git a/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.test.tsx b/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.test.tsx
index 9a240585b..aca9f3e3b 100644
--- a/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.test.tsx
+++ b/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.test.tsx
@@ -1,17 +1,82 @@
import React from "react";
-import { fireEvent, render, screen, waitFor } from "testing/utils";
+import { render, screen } from "testing/utils"; // Import your testing utilities here
import IncidentForm from "./IncidentForm";
-import { INCIDENT_ERROR_MSG } from "./IncidentForm";
+import { BrowserRouter } from "react-router-dom";
+import { Provider } from "react-redux";
+import configureStore, { MockStore } from "redux-mock-store";
-describe("", () => {
- test("Renders without crashing", () => {
+// describe("", () => {
+// test("Renders without crashing", () => {
+// render();
+// expect(screen.getByText("Item Incident Form")).toBeInTheDocument();
+
+// const radios = screen.getAllByRole("radio");
+// const dropdown = screen.getByTestId("qty-dropdown");
+// const textareas = screen.getAllByRole("textbox");
+
+// expect(radios).toHaveLength(3); // three radio buttons
+// expect(dropdown).toBeInTheDocument(); // one dropdown
+// expect(textareas).toHaveLength(3); // three text inputs
+
+// const submitButton = screen.getByRole("button", { name: "Submit" });
+// expect(submitButton).toBeInTheDocument();
+
+// });
+
+// // test("Renders all form components", () => {
+// // render();
+
+// // });
+
+// // test("Renders submit button", () => {
+// // render();
+
+// // });
+// });
+
+describe("IncidentForm", () => {
+ const mockStore = configureStore([]);
+ let store: MockStore;
+
+ beforeEach(() => {
+ store = mockStore({
+ yourReducerKey: {
+ id: 10,
+ quantityRequested: 3,
+ quantityGranted: 2,
+ },
+ });
+ });
+
+ it("renders correctly when searchParams is empty", () => {
render();
- expect(screen.getByText("Item Incident Form")).toBeInTheDocument();
+
+ // Assert that the component renders nothing when searchParams is empty
+ expect(screen.queryByText("Item Incident Form")).toBeNull(); // Update the text according to your component's content
});
- test("Renders all form components", () => {
+ it("renders IncidentFormRender when searchParams is not empty", () => {
+ const mockSearchParams = {
+ get: jest.fn(() =>
+ JSON.stringify({ id: 10, quantityRequested: 3, quantityGranted: 2 })
+ ),
+ toString: jest.fn(() => "mockQueryString"),
+ };
+
+ jest.spyOn(global, "URLSearchParams").mockImplementation(
+ () => mockSearchParams
+ );
+
render();
+ // Assert that mockSearchParams methods are called
+ expect(mockSearchParams.toString).toHaveBeenCalled();
+ expect(mockSearchParams.get).toHaveBeenCalledWith("data");
+
+ // Assert that the component renders IncidentFormRender
+ expect(screen.queryByText("Item Incident Form")).toBeInTheDocument(); // Update the text according to your component's content
+
+ // Renders all form components
const radios = screen.getAllByRole("radio");
const dropdown = screen.getByTestId("qty-dropdown");
const textareas = screen.getAllByRole("textbox");
@@ -19,11 +84,8 @@ describe("", () => {
expect(radios).toHaveLength(3); // three radio buttons
expect(dropdown).toBeInTheDocument(); // one dropdown
expect(textareas).toHaveLength(3); // three text inputs
- });
-
- test("Renders submit button", () => {
- render();
+ // Renders submit button
const submitButton = screen.getByRole("button", { name: "Submit" });
expect(submitButton).toBeInTheDocument();
});
diff --git a/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.tsx b/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.tsx
index 878982b23..4c4550833 100644
--- a/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.tsx
+++ b/hackathon_site/dashboard/frontend/src/pages/IncidentForm/IncidentForm.tsx
@@ -102,7 +102,7 @@ const IncidentForm = () => {
);
history.push("/404"); // redirect to 404 page
}
- });
+ }, []);
let hardwareQuantity: number; // quantity used for dropdown
try {