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"} />
-
+
-
+
-
+
>
);
}