diff --git a/.env.dev b/.env.dev index add2ed2..ce1b79c 100644 --- a/.env.dev +++ b/.env.dev @@ -2,4 +2,4 @@ REACT_APP_CERT_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/certificate REACT_APP_AUTH_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/compute_auth REACT_APP_UPLOAD_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/ota_update REACT_APP_AUTH_CALLBACK_URL=https://dev-ota-admin.cloud.fiskerinc.com -REACT_APP_SUPERSET_URL=https://dev-superset.cloud.fiskerinc.com +REACT_APP_SUPERSET_URL=http://superset-dev.fiskercloud.internal/superset/dashboard/8/?native_filters_key=KPnPthpLQ8rT--6PUdsPzQAcwnleRGHk_3dg0PVYfrXc3SE6zZ2x0p7JuerAZ0Pg diff --git a/.env.local b/.env.local index e8d2226..7a58b1b 100644 --- a/.env.local +++ b/.env.local @@ -2,4 +2,4 @@ REACT_APP_AUTH_SERVICE_URL=http://localhost/compute_auth REACT_APP_CERT_SERVICE_URL=http://localhost/certificate REACT_APP_UPLOAD_SERVICE_URL=http://localhost/ota_update REACT_APP_AUTH_CALLBACK_URL=http://localhost:3000 -REACT_APP_SUPERSET_URL=https://dev-superset.cloud.fiskerinc.com +REACT_APP_SUPERSET_URL=http://superset-dev.fiskercloud.internal/superset/dashboard/8/?native_filters_key=KPnPthpLQ8rT--6PUdsPzQAcwnleRGHk_3dg0PVYfrXc3SE6zZ2x0p7JuerAZ0Pg diff --git a/.env.stg b/.env.stg index 70fac71..ae036f3 100644 --- a/.env.stg +++ b/.env.stg @@ -2,4 +2,4 @@ REACT_APP_AUTH_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/compute_auth REACT_APP_CERT_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/certificate REACT_APP_UPLOAD_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/ota_update REACT_APP_AUTH_CALLBACK_URL=https://stg-ota-admin.cloud.fiskerinc.com -REACT_APP_SUPERSET_URL=https://stg-superset.cloud.fiskerinc.com +REACT_APP_SUPERSET_URL=http://superset-dev.fiskercloud.internal/superset/dashboard/8/?native_filters_key=KPnPthpLQ8rT--6PUdsPzQAcwnleRGHk_3dg0PVYfrXc3SE6zZ2x0p7JuerAZ0Pg diff --git a/src/components/App/App.test.js b/src/components/App/App.test.js index e92f442..1c40617 100644 --- a/src/components/App/App.test.js +++ b/src/components/App/App.test.js @@ -17,6 +17,7 @@ import { import { setToken } from "../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../utils/testing"; import App from "."; +import addSnapshotSerializer from "../../utils/snapshot"; const LOADING_STATUS = "Loading..."; @@ -43,32 +44,8 @@ const sleepAndCheck = async (path, selector, compare) => { }; describe("App", () => { - const rxMakeStyles = /makeStyles-(\w+)-(\d+)/gi; - beforeAll(() => { - // Stablize Table Pagination control ids - expect.addSnapshotSerializer({ - test: function (val) { - return val && typeof val === "string" && val.indexOf("mui-") > -1; - }, - print: function (val) { - let str = val; - str = str.replace(/mui-\d*/g, "mui-00000"); - - return `"${str}"`; - }, - }); - expect.addSnapshotSerializer({ - test: (val) => { - return val && typeof val === "string" && val.search(rxMakeStyles) > -1; - }, - print: function (val) { - let str = val; - str = str.replace(rxMakeStyles, "makeStyles-$1-0000"); - - return `"${str}"`; - }, - }); + addSnapshotSerializer(expect); }, 60000); afterEach(() => { @@ -134,7 +111,7 @@ describe("App", () => { it("Route /tools/sms/send unauthenticated", async () => { await check("/tools/sms/send", "span.MuiButton-label", "Sign In"); - }) + }); it("Route /page-not-found unauthenticated", async () => { await check("/page-not-found", "h1", "Page Not Found"); diff --git a/src/components/App/__snapshots__/App.test.js.snap b/src/components/App/__snapshots__/App.test.js.snap index ebc871d..57bb2d5 100644 --- a/src/components/App/__snapshots__/App.test.js.snap +++ b/src/components/App/__snapshots__/App.test.js.snap @@ -6,10 +6,10 @@ exports[`App Route / authenticated 1`] = ` data-testid="mocked-userprovider" >
Fisker Admin Portal
@@ -212,12 +212,10 @@ exports[`App Route / authenticated 1`] = `
  • @@ -526,10 +524,10 @@ exports[`App Route /home authenticated 1`] = ` data-testid="mocked-userprovider" >
    Fisker Admin Portal
    @@ -732,12 +730,10 @@ exports[`App Route /home authenticated 1`] = `
  • @@ -1046,10 +1042,10 @@ exports[`App Route /package-create authenticated 1`] = ` data-testid="mocked-userprovider" >
    Fisker Admin Portal
    @@ -1288,12 +1284,10 @@ exports[`App Route /package-create authenticated 1`] = `
  • VIN sorted ascending @@ -3260,7 +3252,7 @@ exports[`App Route /package-deploy authenticated 1`] = ` />

    Rows per page:

    @@ -3270,7 +3262,7 @@ exports[`App Route /package-deploy authenticated 1`] = `

    Rows per page:

    @@ -3955,7 +3945,7 @@ exports[`App Route /package-status authenticated 1`] = `
    ID sorted ascending @@ -4780,7 +4768,7 @@ exports[`App Route /packages authenticated 1`] = ` />

    Rows per page:

    @@ -4790,7 +4778,7 @@ exports[`App Route /packages authenticated 1`] = `
    VIN sorted ascending @@ -9205,7 +9181,7 @@ exports[`App Route /vehicles authenticated 1`] = ` />

    Rows per page:

    @@ -9215,7 +9191,7 @@ exports[`App Route /vehicles authenticated 1`] = `
    VIN sorted ascending diff --git a/src/components/Cars/List/index.test.jsx b/src/components/Cars/List/index.test.jsx index 64cf8db..08b6335 100644 --- a/src/components/Cars/List/index.test.jsx +++ b/src/components/Cars/List/index.test.jsx @@ -1,8 +1,8 @@ jest.mock("../../Contexts/VehicleContext"); jest.mock("../../Contexts/StatusContext"); jest.mock("../../Contexts/UserContext"); -jest.mock('@material-ui/core/utils/unstable_useId', () => - jest.fn().mockReturnValue('mui-test-id'), +jest.mock("@material-ui/core/utils/unstable_useId", () => + jest.fn().mockReturnValue("mui-test-id") ); import { render, waitFor } from "@testing-library/react"; @@ -12,7 +12,8 @@ import { VehicleProvider } from "../../Contexts/VehicleContext"; import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; -import MainForm from "./index" +import MainForm from "./index"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderVehicleTable = async () => { const { container } = render( @@ -26,11 +27,17 @@ const renderVehicleTable = async () => { ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("VehicleTable", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderVehicleTable(); diff --git a/src/components/Cars/Status/CANFiltersTab.test.jsx b/src/components/Cars/Status/CANFiltersTab.test.jsx index e292f95..f7ac32d 100644 --- a/src/components/Cars/Status/CANFiltersTab.test.jsx +++ b/src/components/Cars/Status/CANFiltersTab.test.jsx @@ -1,8 +1,8 @@ jest.mock("../../Contexts/CANFiltersContext"); jest.mock("../../Contexts/StatusContext"); jest.mock("../../Contexts/UserContext"); -jest.mock('@material-ui/core/utils/unstable_useId', () => - jest.fn().mockReturnValue('mui-test-id'), +jest.mock("@material-ui/core/utils/unstable_useId", () => + jest.fn().mockReturnValue("mui-test-id") ); import { render, waitFor } from "@testing-library/react"; @@ -10,7 +10,8 @@ import { BrowserRouter } from "react-router-dom"; import { setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; -import CANFiltersTab from "./CANFiltersTab" +import CANFiltersTab from "./CANFiltersTab"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderCANFiltersTab = async () => { const { container } = render( @@ -18,11 +19,17 @@ const renderCANFiltersTab = async () => { ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("CANFiltersTab", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderCANFiltersTab(); diff --git a/src/components/Cars/Status/CarUpdatesTab.test.jsx b/src/components/Cars/Status/CarUpdatesTab.test.jsx index 436dea2..291be4b 100644 --- a/src/components/Cars/Status/CarUpdatesTab.test.jsx +++ b/src/components/Cars/Status/CarUpdatesTab.test.jsx @@ -1,8 +1,8 @@ jest.mock("../../Contexts/CANFiltersContext"); jest.mock("../../Contexts/StatusContext"); jest.mock("../../Contexts/UserContext"); -jest.mock('@material-ui/core/utils/unstable_useId', () => - jest.fn().mockReturnValue('mui-test-id'), +jest.mock("@material-ui/core/utils/unstable_useId", () => + jest.fn().mockReturnValue("mui-test-id") ); import { render, waitFor } from "@testing-library/react"; @@ -12,7 +12,8 @@ import { CANFiltersProvider } from "../../Contexts/CANFiltersContext"; import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; -import MainForm from "./CarUpdatesTab" +import MainForm from "./CarUpdatesTab"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderCarUpdatesTab = async () => { const { container } = render( @@ -26,11 +27,17 @@ const renderCarUpdatesTab = async () => { ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("CarUpdatesTab", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderCarUpdatesTab(); diff --git a/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap b/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap index ae78611..3dcc0a7 100644 --- a/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap +++ b/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap @@ -15,13 +15,13 @@ exports[`VehicleDetailsTab Render 1`] = ` data-testid="mocked-vehicleprovider" >

    @@ -38,7 +38,7 @@ exports[`VehicleDetailsTab Render 1`] = `

    CANBus @@ -80,7 +80,7 @@ exports[`VehicleDetailsTab Render 1`] = `

    { const { container } = render( @@ -23,11 +24,17 @@ const renderVehicleDetailsTab = async () => { ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("VehicleDetailsTab", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderVehicleDetailsTab(); diff --git a/src/components/Cars/Status/DetailsTab.test.jsx b/src/components/Cars/Status/DetailsTab.test.jsx index 06c7a1f..4057a10 100644 --- a/src/components/Cars/Status/DetailsTab.test.jsx +++ b/src/components/Cars/Status/DetailsTab.test.jsx @@ -1,8 +1,8 @@ jest.mock("../../Contexts/VehicleContext"); jest.mock("../../Contexts/StatusContext"); jest.mock("../../Contexts/UserContext"); -jest.mock('@material-ui/core/utils/unstable_useId', () => - jest.fn().mockReturnValue('mui-test-id'), +jest.mock("@material-ui/core/utils/unstable_useId", () => + jest.fn().mockReturnValue("mui-test-id") ); import { render, waitFor } from "@testing-library/react"; @@ -12,27 +12,34 @@ import { VehicleProvider } from "../../Contexts/VehicleContext"; import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; -import MainForm from "./DetailsTab" +import MainForm from "./DetailsTab"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderDetailsTab = async () => { const { container } = render( - + - + ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("DetailsTab", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderDetailsTab(); diff --git a/src/components/Cars/Status/DigitalTwinTab.test.jsx b/src/components/Cars/Status/DigitalTwinTab.test.jsx index 164d5d0..aa9c27a 100644 --- a/src/components/Cars/Status/DigitalTwinTab.test.jsx +++ b/src/components/Cars/Status/DigitalTwinTab.test.jsx @@ -12,6 +12,7 @@ import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; import DigitalTwinTab from "./DigitalTwinTab"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderDetailsTab = async () => { const { container } = render( @@ -28,6 +29,10 @@ const renderDetailsTab = async () => { }; describe("DigitalTwinTab", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderDetailsTab(); diff --git a/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap b/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap index 9262594..5aca30a 100644 --- a/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap +++ b/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap @@ -3,7 +3,7 @@ exports[`CANFiltersTab Render 1`] = `
    Car ECUs
    ECU sorted descending diff --git a/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap b/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap index 0c0ee83..3c50755 100644 --- a/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap +++ b/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap @@ -12,7 +12,7 @@ exports[`DetailsTab Render 1`] = ` data-testid="mocked-userprovider" >

    @@ -47,7 +47,7 @@ exports[`DetailsTab Render 1`] = `

    CANBus @@ -89,7 +89,7 @@ exports[`DetailsTab Render 1`] = `

    Doors @@ -85,7 +85,7 @@ exports[`DigitalTwinTab Render 1`] = `

    Location @@ -113,7 +113,7 @@ exports[`DigitalTwinTab Render 1`] = `

    @@ -124,7 +124,7 @@ exports[`DigitalTwinTab Render 1`] = `

    diff --git a/src/components/Cars/Status/__snapshots__/index.test.jsx.snap b/src/components/Cars/Status/__snapshots__/index.test.jsx.snap index 90b88f5..1b762cd 100644 --- a/src/components/Cars/Status/__snapshots__/index.test.jsx.snap +++ b/src/components/Cars/Status/__snapshots__/index.test.jsx.snap @@ -12,10 +12,10 @@ exports[`CarStatus Render 1`] = ` data-testid="mocked-userprovider" >

    @@ -115,10 +115,10 @@ exports[`CarStatus Render 1`] = ` role="tabpanel" >

    @@ -142,7 +142,7 @@ exports[`CarStatus Render 1`] = `

    - jest.fn().mockReturnValue('mui-test-id'), +jest.mock("@material-ui/core/utils/unstable_useId", () => + jest.fn().mockReturnValue("mui-test-id") ); import { render, waitFor } from "@testing-library/react"; @@ -12,7 +12,8 @@ import { CANFiltersProvider } from "../../Contexts/CANFiltersContext"; import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; -import CarStatus from "./index" +import CarStatus from "./index"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderCarStatus = async () => { const { container } = render( @@ -26,11 +27,17 @@ const renderCarStatus = async () => { ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("CarStatus", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderCarStatus(); diff --git a/src/components/Cars/Update/__snapshots__/index.test.jsx.snap b/src/components/Cars/Update/__snapshots__/index.test.jsx.snap index 86ff5c7..78c7610 100644 --- a/src/components/Cars/Update/__snapshots__/index.test.jsx.snap +++ b/src/components/Cars/Update/__snapshots__/index.test.jsx.snap @@ -15,11 +15,11 @@ exports[`VehicleUpdate Render 1`] = ` data-testid="mocked-vehicleprovider" >
    - jest.fn().mockReturnValue('mui-test-id'), +jest.mock("@material-ui/core/utils/unstable_useId", () => + jest.fn().mockReturnValue("mui-test-id") ); import { render, waitFor } from "@testing-library/react"; @@ -12,7 +12,8 @@ import { FleetProvider } from "../../Contexts/FleetContext"; import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; -import MainForm from "./index" +import MainForm from "./index"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderFleetTable = async () => { const { container } = render( @@ -26,11 +27,17 @@ const renderFleetTable = async () => { ); - await waitFor(() => { /* render */ }); + await waitFor(() => { + /* render */ + }); return container; }; describe("FleetTable", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderFleetTable(); diff --git a/src/components/Fleets/Update/__snapshots__/index.test.jsx.snap b/src/components/Fleets/Update/__snapshots__/index.test.jsx.snap index 096bdca..24169cd 100644 --- a/src/components/Fleets/Update/__snapshots__/index.test.jsx.snap +++ b/src/components/Fleets/Update/__snapshots__/index.test.jsx.snap @@ -15,11 +15,11 @@ exports[`FleetUpdate Render 1`] = ` data-testid="mocked-fleetprovider" >
    Registered sorted ascending diff --git a/src/components/Suppliers/List/index.test.jsx b/src/components/Suppliers/List/index.test.jsx index eda2fd9..520e896 100644 --- a/src/components/Suppliers/List/index.test.jsx +++ b/src/components/Suppliers/List/index.test.jsx @@ -12,6 +12,7 @@ import { StatusProvider } from "../../Contexts/StatusContext"; import { UserProvider, setToken } from "../../Contexts/UserContext"; import { TEST_AUTH_OBJECT } from "../../../utils/testing"; import MainForm from "./index"; +import addSnapshotSerializer from "../../../utils/snapshot"; const renderSuppliersPage = async () => { const { container } = render( @@ -32,6 +33,10 @@ const renderSuppliersPage = async () => { }; describe("Suppliers page", () => { + beforeAll(() => { + addSnapshotSerializer(expect); + }); + it("Render", async () => { setToken(TEST_AUTH_OBJECT); const container = await renderSuppliersPage(); diff --git a/src/components/useStyles.jsx b/src/components/useStyles.jsx index bb18d22..df12ed4 100644 --- a/src/components/useStyles.jsx +++ b/src/components/useStyles.jsx @@ -171,6 +171,15 @@ const useStyles = makeStyles((theme) => ({ grow: { flexGrow: 1, }, + iframeResponsive: { + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + width: "100%", + height: "100%", + }, embeddedWrapper: { marginTop: 10, position: "relative", diff --git a/src/utils/snapshot.js b/src/utils/snapshot.js new file mode 100644 index 0000000..54395e8 --- /dev/null +++ b/src/utils/snapshot.js @@ -0,0 +1,35 @@ +const rxMakeStyles = /makeStyles-(\w+)-(\d+)/gi; +const rxMUIStyles = /mui-\d*/g; + +const snapshotSerializers = [ + { + test: (val) => { + return val && typeof val === "string" && val.indexOf("mui-") > -1; + }, + print: (val) => { + let str = val; + str = str.replace(rxMUIStyles, "mui-0"); + + return `"${str}"`; + }, + }, + { + test: (val) => { + return val && typeof val === "string" && val.search(rxMakeStyles) > -1; + }, + print: (val) => { + let str = val; + str = str.replace(rxMakeStyles, "makeStyles-$1-0"); + + return `"${str}"`; + }, + }, +]; + +const addSnapshotSerializer = (expect) => { + snapshotSerializers.forEach((serializer) => { + expect.addSnapshotSerializer(serializer); + }); +}; + +export default addSnapshotSerializer;