From 2e1f4a7a7cca2566439457d1bd8fb24779ab6c26 Mon Sep 17 00:00:00 2001 From: John Wu <76966357+jwu-fisker@users.noreply.github.com> Date: Thu, 11 Mar 2021 12:53:29 -0800 Subject: [PATCH] Change main UI layout and add VINs to add and upload forms (#16) * Add new upload update package form Add new add vehicle form Add new side menu layout Add new toolbar layout Update and add unit tests * Enable add get and add vehicles * Integration issues with ota_update service * Update get vehicle JSON format * Fix related unit test Add release notes field * Add StatusContext to display error and status messages --- package.json | 1 + src/components/App/App.test.js | 23 +- .../App/__snapshots__/App.test.js.snap | 1557 +++++++++++++++-- src/components/App/index.jsx | 17 +- src/components/Contexts/FileUploadContext.jsx | 51 +- .../Contexts/FileUploadContext.test.jsx | 86 +- src/components/Contexts/StatusContext.jsx | 20 + src/components/Contexts/UserContext.jsx | 13 +- src/components/Contexts/UserContext.test.jsx | 27 +- src/components/Contexts/VehicleContext.jsx | 60 + .../Contexts/VehicleContext.test.jsx | 142 ++ .../Contexts/__mocks__/FileUploadContext.jsx | 5 + .../Contexts/__mocks__/VehicleContext.jsx | 24 + .../FileUploadForm/FileUploadForm.test.js | 10 +- .../__snapshots__/FileUploadForm.test.js.snap | 250 ++- src/components/FileUploadForm/index.jsx | 229 ++- src/components/Layouts/MenuDrawer.jsx | 105 ++ src/components/Layouts/SideMenu.jsx | 18 + src/components/ListItemLink.jsx | 35 + src/components/MessageBar.jsx | 12 +- src/components/Routes/ProtectedRoute.jsx | 7 +- src/components/Routes/SiteRoutes.jsx | 43 +- .../__snapshots__/SSOForm.test.js.snap | 48 +- src/components/SSOForm/index.jsx | 36 +- src/components/VehicleAddForm/index.jsx | 77 + src/components/menuItemStyle.jsx | 10 + src/components/useStyles.jsx | 87 + src/services/__mocks__/uploadFile.js | 2 +- src/services/__mocks__/vehicles.js | 17 + src/services/uploadFile.js | 11 +- src/services/vehicles.js | 20 + 31 files changed, 2666 insertions(+), 377 deletions(-) create mode 100644 src/components/Contexts/StatusContext.jsx create mode 100644 src/components/Contexts/VehicleContext.jsx create mode 100644 src/components/Contexts/VehicleContext.test.jsx create mode 100644 src/components/Contexts/__mocks__/VehicleContext.jsx create mode 100644 src/components/Layouts/MenuDrawer.jsx create mode 100644 src/components/Layouts/SideMenu.jsx create mode 100644 src/components/ListItemLink.jsx create mode 100644 src/components/VehicleAddForm/index.jsx create mode 100644 src/components/menuItemStyle.jsx create mode 100644 src/services/__mocks__/vehicles.js create mode 100644 src/services/vehicles.js diff --git a/package.json b/package.json index 789b9ca..6441d25 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "@testing-library/react": "^11.2.2", "@testing-library/user-event": "^12.6.0", "axios": "^0.21.1", + "clsx": "^1.1.1", "material-ui-dropzone": "^3.5.0", "react": "^17.0.1", "react-dom": "^17.0.1", diff --git a/src/components/App/App.test.js b/src/components/App/App.test.js index 150a38a..c816b0d 100644 --- a/src/components/App/App.test.js +++ b/src/components/App/App.test.js @@ -1,5 +1,6 @@ jest.mock("../Contexts/UserContext"); jest.mock("../Contexts/FileUploadContext"); +jest.mock("../Contexts/VehicleContext"); import { render, screen, cleanup, waitForElementToBeRemoved } from "@testing-library/react"; import { setToken } from "../Contexts/UserContext"; @@ -26,27 +27,40 @@ describe("App", () => { it("Route / unauthenticated", async () => { const container = await renderRoute("/"); - expect(container.querySelector("h1").innerHTML).toEqual("Fisker OTA Portal"); + expect(container.querySelector("span.MuiButton-label").innerHTML).toEqual("Sign In"); expect(container).toMatchSnapshot(); }); it("Route /home unauthenticated", async () => { const container = await renderRoute("/home"); - expect(container.querySelector("h1").innerHTML).toEqual("Fisker OTA Portal"); + expect(container.querySelector("span.MuiButton-label").innerHTML).toEqual("Sign In"); + expect(container).toMatchSnapshot(); + }); + + it("Route /vehicle-add unauthenticated", async () => { + const container = await renderRoute("/vehicle-add"); + expect(container.querySelector("span.MuiButton-label").innerHTML).toEqual("Sign In"); expect(container).toMatchSnapshot(); }); it("Route / authenticated", async () => { setToken(TEST_TOKEN); const container = await renderRoute("/"); - expect(container.querySelector("h1").innerHTML).toEqual("Upload file"); + expect(container.querySelector("h1").innerHTML).toEqual("Upload Update Package"); expect(container).toMatchSnapshot(); }); it("Route /home authenticated", async () => { setToken(TEST_TOKEN); const container = await renderRoute("/home"); - expect(container.querySelector("h1").innerHTML).toEqual("Upload file"); + expect(container.querySelector("h1").innerHTML).toEqual("Upload Update Package"); + expect(container).toMatchSnapshot(); + }); + + it("Route /vehicle-add authenticated", async () => { + setToken(TEST_TOKEN); + const container = await renderRoute("/vehicle-add"); + expect(container.querySelector("h1").innerHTML).toEqual("Add Vehicle"); expect(container).toMatchSnapshot(); }); @@ -62,5 +76,4 @@ describe("App", () => { expect(container.querySelector("h1").innerHTML).toEqual("Page Not Found"); expect(container).toMatchSnapshot(); }); - }) \ No newline at end of file diff --git a/src/components/App/__snapshots__/App.test.js.snap b/src/components/App/__snapshots__/App.test.js.snap index 21b2926..f2b0a88 100644 --- a/src/components/App/__snapshots__/App.test.js.snap +++ b/src/components/App/__snapshots__/App.test.js.snap @@ -5,81 +5,440 @@ exports[`App Route / authenticated 1`] = `
-
-
-

- Upload file -

-
-
- - -
-
+ + + + + +
+ Fisker OTA Portal +
+
+ + -
+
+
+
+
+
+
+

+ Upload Update Package +

+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+