From 5112cbdf07cde1c4ec2d6cf8cbac85c233c20708 Mon Sep 17 00:00:00 2001 From: SidraJaved Date: Fri, 3 Nov 2023 11:59:03 +0000 Subject: [PATCH] wip: updates in unit tests to support new external CATI URL that will link to CaseInfo page. refactored config.tsx and config.test.tsx work in progress in App.tsx and App.test.tsx Co-authored-by: James Anthony Williams Co-authored-by: motalm --- server/Config.ts | 24 ++++++++++++---------- server/index.ts | 4 ++-- server/tests/config.test.ts | 6 +++--- src/App.test.tsx | 27 ++++++++++++++++++++++++- src/App.tsx | 40 ++++++++++++++++++------------------- 5 files changed, 64 insertions(+), 37 deletions(-) diff --git a/server/Config.ts b/server/Config.ts index 531b6ee0..247db845 100644 --- a/server/Config.ts +++ b/server/Config.ts @@ -8,12 +8,12 @@ export interface EnvironmentVariables { } export function getEnvironmentVariables(): EnvironmentVariables { - let {VM_EXTERNAL_CLIENT_URL, - VM_EXTERNAL_WEB_URL, - BLAISE_API_URL, - BIMS_CLIENT_ID, - BIMS_API_URL} = process.env; - const CATI_DASHBOARD_URL = "https://" + VM_EXTERNAL_WEB_URL + "/Blaise"; + let { VM_EXTERNAL_CLIENT_URL, + VM_EXTERNAL_WEB_URL, + BLAISE_API_URL, + BIMS_CLIENT_ID, + BIMS_API_URL } = process.env; + const CATI_DASHBOARD_URL = "https://" + VM_EXTERNAL_WEB_URL + "/Blaise/CaseInfo"; if (BLAISE_API_URL === undefined) { console.error("BLAISE_API_URL environment variable has not been set"); @@ -40,12 +40,14 @@ export function getEnvironmentVariables(): EnvironmentVariables { BIMS_API_URL = "ENV_VAR_NOT_SET"; } - return {VM_EXTERNAL_CLIENT_URL, - VM_EXTERNAL_WEB_URL, + return { + VM_EXTERNAL_CLIENT_URL, + VM_EXTERNAL_WEB_URL, BLAISE_API_URL: fixURL(BLAISE_API_URL), - CATI_DASHBOARD_URL, - BIMS_CLIENT_ID, - BIMS_API_URL}; + CATI_DASHBOARD_URL, + BIMS_CLIENT_ID, + BIMS_API_URL + }; } function fixURL(url: string): string { diff --git a/server/index.ts b/server/index.ts index d8561f71..c0360011 100644 --- a/server/index.ts +++ b/server/index.ts @@ -4,7 +4,7 @@ import * as profiler from "@google-cloud/profiler"; import { getEnvironmentVariables } from "./Config"; import dotenv from "dotenv"; -profiler.start({logLevel: 4}).catch((err: unknown) => { +profiler.start({ logLevel: 4 }).catch((err: unknown) => { console.log(`Failed to start profiler: ${err}`); }); @@ -24,4 +24,4 @@ const app = nodeServer(environmentVariables, blaiseApiClient); app.listen(port); -console.log("App is listening on port " + port); +console.log("App is listening on port " + port); \ No newline at end of file diff --git a/server/tests/config.test.ts b/server/tests/config.test.ts index 58cce472..d3da0c8e 100644 --- a/server/tests/config.test.ts +++ b/server/tests/config.test.ts @@ -1,4 +1,4 @@ -import {getEnvironmentVariables} from "../Config"; +import { getEnvironmentVariables } from "../Config"; describe("Config setup", () => { afterEach(() => { @@ -20,7 +20,7 @@ describe("Config setup", () => { expect(VM_EXTERNAL_CLIENT_URL).toBe("external-client-url"); expect(VM_EXTERNAL_WEB_URL).toBe("external-web-url"); expect(BLAISE_API_URL).toBe("http://mock"); - expect(CATI_DASHBOARD_URL).toBe("https://external-web-url/Blaise"); + expect(CATI_DASHBOARD_URL).toBe("https://external-web-url/Blaise/CaseInfo"); expect(BIMS_CLIENT_ID).toBe("mock@id"); expect(BIMS_API_URL).toBe("mock-bims-api"); }); @@ -46,7 +46,7 @@ describe("Config setup", () => { expect(VM_EXTERNAL_CLIENT_URL).toBe("ENV_VAR_NOT_SET"); expect(VM_EXTERNAL_WEB_URL).toBe("ENV_VAR_NOT_SET"); expect(BLAISE_API_URL).toBe("ENV_VAR_NOT_SET"); - expect(CATI_DASHBOARD_URL).toBe("https://undefined/Blaise"); + expect(CATI_DASHBOARD_URL).toBe("https://undefined/Blaise/CaseInfo"); expect(BIMS_CLIENT_ID).toBe("ENV_VAR_NOT_SET"); expect(BIMS_API_URL).toBe("ENV_VAR_NOT_SET"); }); diff --git a/src/App.test.tsx b/src/App.test.tsx index 5e1e92fe..f377634b 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -1,12 +1,13 @@ import React from "react"; import { render, waitFor, fireEvent, screen, cleanup } from "@testing-library/react"; -import App from "./App"; import "@testing-library/jest-dom"; import flushPromises from "./tests/utils"; import { act } from "react-dom/test-utils"; import { createMemoryHistory } from "history"; import { Router } from "react-router-dom"; import { Survey } from "blaise-api-node-client"; +import App from "./App"; +import { ExternalLink } from "blaise-design-system-react-components"; const surveyListReturned: Survey[] = [ { @@ -187,3 +188,27 @@ describe("Given the API returns an empty list", () => { cleanup(); }); }); + + +describe("Given the initial external CATI URL", () => { + + beforeAll(() => { + mock_server_request(200, []); + }); + + it("it should return with /CaseInfo", async () => { + + const history = createMemoryHistory(); + render( + + + + ); + + expect().toBeInTheDocument; + + // const externalCATIUrlElement = getByText("/Blaise"); + // const externalCATIUrl = externalCATIUrlElement.textContent; + // expect(externalCATIUrl).toEqual("/Blaise"); + }); +}); \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 8ae3bed9..8719267a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,12 @@ -import React, {ReactElement, useEffect, useState} from "react"; -import {DefaultErrorBoundary} from "./Components/ErrorHandling/DefaultErrorBoundary"; -import {isDevEnv, isTrainingEnv} from "./Functions"; -import {Switch, Route} from "react-router-dom"; +import React, { ReactElement, useEffect, useState } from "react"; +import { DefaultErrorBoundary } from "./Components/ErrorHandling/DefaultErrorBoundary"; +import { isDevEnv, isTrainingEnv } from "./Functions"; +import { Switch, Route } from "react-router-dom"; import InstrumentList from "./Components/InstrumentList"; import SurveyList from "./Components/SurveyList"; -import {Survey} from "blaise-api-node-client"; -import {ErrorBoundary} from "./Components/ErrorHandling/ErrorBoundary"; -import {Footer, Header, ONSErrorPanel, ExternalLink} from "blaise-design-system-react-components"; +import { Survey } from "blaise-api-node-client"; +import { ErrorBoundary } from "./Components/ErrorHandling/ErrorBoundary"; +import { Footer, Header, ONSErrorPanel, ExternalLink } from "blaise-design-system-react-components"; interface listError { error: boolean, @@ -28,7 +28,7 @@ function App(): ReactElement { useEffect(() => { if (isTrainingEnv()) setHeaderText("Telephone Operations Blaise Interface (training)"); - }); + }); const [externalClientUrl, setExternalClientUrl] = useState("External URL should be here"); const [externalCATIUrl, setExternalCATIUrl] = useState("/Blaise"); @@ -41,7 +41,7 @@ function App(): ReactElement { }, [externalClientUrl, externalCATIUrl]); const [surveys, setSurveys] = useState([]); - const [listError, setListError] = useState({error: false, message: "Loading ..."}); + const [listError, setListError] = useState({ error: false, message: "Loading ..." }); useEffect(() => { getList(); @@ -61,20 +61,20 @@ function App(): ReactElement { console.log("Retrieved instrument list, " + json.length + " items/s"); isDevEnv() && console.log(json); setSurveys(json); - setListError({error: false, message: ""}); + setListError({ error: false, message: "" }); // If the list is empty then show this message in the list - if (json.length === 0) setListError({error: false, message: "No active surveys found."}); + if (json.length === 0) setListError({ error: false, message: "No active surveys found." }); }) .catch((error) => { isDevEnv() && console.error("Unable to read json from response, error: " + error); - setListError({error: true, message: "Unable to load surveys"}); + setListError({ error: true, message: "Unable to load surveys" }); }); }).catch((error) => { isDevEnv() && console.error("Failed to retrieve instrument list, error: " + error); - setListError({error: true, message: "Unable to load surveys"}); + setListError({ error: true, message: "Unable to load surveys" }); } - ); + ); } @@ -93,28 +93,28 @@ function App(): ReactElement { Please note, the table containing information on active questionnaires may take a few seconds to load.

- {listError.error && } + {listError.error && }

+ link={externalCATIUrl} + id={"cati-dashboard"} />

- + - + -