Skip to content

Commit

Permalink
wip: updates in unit tests to support new external CATI URL that will…
Browse files Browse the repository at this point in the history
… 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 <[email protected]>
Co-authored-by: motalm <[email protected]>
  • Loading branch information
3 people committed Nov 3, 2023
1 parent b78b9d4 commit 5112cbd
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 37 deletions.
24 changes: 13 additions & 11 deletions server/Config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}`);
});

Expand All @@ -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);
6 changes: 3 additions & 3 deletions server/tests/config.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {getEnvironmentVariables} from "../Config";
import { getEnvironmentVariables } from "../Config";

describe("Config setup", () => {
afterEach(() => {
Expand All @@ -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");
});
Expand All @@ -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");
});
Expand Down
27 changes: 26 additions & 1 deletion src/App.test.tsx
Original file line number Diff line number Diff line change
@@ -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[] = [
{
Expand Down Expand Up @@ -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(
<Router history={history}>
<App />
</Router>
);

expect(<ExternalLink text={"Link to CATI dashboard"} link={''} id={"cati-dashboard"} />).toBeInTheDocument;

// const externalCATIUrlElement = getByText("/Blaise");
// const externalCATIUrl = externalCATIUrlElement.textContent;
// expect(externalCATIUrl).toEqual("/Blaise");
});
});
40 changes: 20 additions & 20 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -28,7 +28,7 @@ function App(): ReactElement {

useEffect(() => {
if (isTrainingEnv()) setHeaderText("Telephone Operations Blaise Interface (training)");
});
});

const [externalClientUrl, setExternalClientUrl] = useState<string>("External URL should be here");
const [externalCATIUrl, setExternalCATIUrl] = useState<string>("/Blaise");
Expand All @@ -41,7 +41,7 @@ function App(): ReactElement {
}, [externalClientUrl, externalCATIUrl]);

const [surveys, setSurveys] = useState<Survey[]>([]);
const [listError, setListError] = useState<listError>({error: false, message: "Loading ..."});
const [listError, setListError] = useState<listError>({ error: false, message: "Loading ..." });

useEffect(() => {
getList();
Expand All @@ -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" });
}
);
);
}


Expand All @@ -93,28 +93,28 @@ function App(): ReactElement {
Please note, the table containing information on active questionnaires may
take a few seconds to load.
</p>
{listError.error && <ONSErrorPanel/>}
{listError.error && <ONSErrorPanel />}
<p className="ons-u-mt-m">
<ExternalLink text={"Link to CATI dashboard"}
link={externalCATIUrl}
id={"cati-dashboard"}/>
link={externalCATIUrl}
id={"cati-dashboard"} />
</p>
<Switch>
<Route path="/survey/:survey">
<ErrorBoundary errorMessageText={"Unable to load questionnaire table correctly"}>
<InstrumentList list={surveys} listError={listError}/>
<InstrumentList list={surveys} listError={listError} />
</ErrorBoundary>
</Route>
<Route path="/">
<ErrorBoundary errorMessageText={"Unable to load survey table correctly"}>
<SurveyList list={surveys} listError={listError}/>
<SurveyList list={surveys} listError={listError} />
</ErrorBoundary>
</Route>
</Switch>
</DefaultErrorBoundary>
</main>
</div>
<Footer/>
<Footer />
</>
);
}
Expand Down

0 comments on commit 5112cbd

Please sign in to comment.