Skip to content

Commit 89f8f1a

Browse files
authored
Merge pull request #1755 from companieshouse/feat/remove-update-journey-changes
chore/cc-3066: revert cache removal changes from main branch for the update journey
2 parents 1d7f623 + 9d1d965 commit 89f8f1a

File tree

8 files changed

+43
-209
lines changed

8 files changed

+43
-209
lines changed

src/controllers/update/overseas.entity.query.controller.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { mapCompanyProfileToOverseasEntity } from "../../utils/update/company.pr
1111
import { mapInputDate } from "../../utils/update/mapper.utils";
1212
import { CompanyProfile } from "@companieshouse/api-sdk-node/dist/services/company-profile/types";
1313
import { retrieveBoAndMoData } from "../../utils/update/beneficial_owners_managing_officers_data_fetch";
14-
import { getBackLinkUrl, isRemoveJourney } from "../../utils/url";
14+
import { isRemoveJourney } from "../../utils/url";
1515

1616
export const get = async (req: Request, res: Response, next: NextFunction) => {
1717
try {
@@ -29,14 +29,8 @@ export const get = async (req: Request, res: Response, next: NextFunction) => {
2929
});
3030
}
3131

32-
const backLinkUrl = getBackLinkUrl({
33-
req,
34-
urlWithEntityIds: config.UPDATE_INTERRUPT_CARD_WITH_PARAMS_URL,
35-
urlWithoutEntityIds: config.UPDATE_INTERRUPT_CARD_URL,
36-
});
37-
3832
return res.render(config.OVERSEAS_ENTITY_QUERY_PAGE, {
39-
backLinkUrl,
33+
backLinkUrl: config.UPDATE_INTERRUPT_CARD_URL,
4034
templateName: config.OVERSEAS_ENTITY_QUERY_PAGE,
4135
chsUrl: process.env.CHS_URL,
4236
[EntityNumberKey]: appData[EntityNumberKey]

src/controllers/update/secure.update.filter.controller.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@ import { NextFunction, Request, Response } from "express";
22

33
import * as config from "../../config";
44
import { getFilterPage, postFilterPage } from "../../utils/secure.filter";
5-
import { isActiveFeature } from "../../utils/feature.flag";
65

76
export const get = async (req: Request, res: Response, next: NextFunction) => {
8-
await getFilterPage(req, res, next, config.SECURE_UPDATE_FILTER_PAGE, config.UPDATE_CONTINUE_WITH_SAVED_FILING_URL);
7+
await getFilterPage(req, res, next, config.SECURE_UPDATE_FILTER_PAGE, config.UPDATE_LANDING_PAGE_URL);
98
};
109

11-
export const post = async (req: Request, res: Response, next: NextFunction) => {
12-
const nextPageUrl = isActiveFeature(config.FEATURE_FLAG_ENABLE_REDIS_REMOVAL)
13-
? config.UPDATE_INTERRUPT_CARD_WITH_PARAMS_URL : config.UPDATE_INTERRUPT_CARD_URL;
14-
await postFilterPage(req, res, next, config.UPDATE_USE_PAPER_URL, nextPageUrl);
10+
export const post = (req: Request, res: Response, next: NextFunction) => {
11+
postFilterPage(req, res, next, config.UPDATE_USE_PAPER_URL, config.UPDATE_INTERRUPT_CARD_URL);
1512
};

src/controllers/update/update.interrupt.card.controller.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { NextFunction, Request, Response } from "express";
2-
import * as config from "../../config";
32
import { logger } from "../../utils/logger";
4-
import {
5-
getBackLinkUrl,
6-
isRemoveJourney
7-
} from "../../utils/url";
3+
import * as config from "../../config";
4+
import { isRemoveJourney } from "../../utils/url";
85

96
export const get = async (req: Request, res: Response, next: NextFunction) => {
107

@@ -21,14 +18,8 @@ export const get = async (req: Request, res: Response, next: NextFunction) => {
2118
});
2219
}
2320

24-
const backLinkUrl = getBackLinkUrl({
25-
req,
26-
urlWithEntityIds: config.SECURE_UPDATE_FILTER_WITH_PARAMS_URL,
27-
urlWithoutEntityIds: config.SECURE_UPDATE_FILTER_URL,
28-
});
29-
3021
return res.render(config.UPDATE_INTERRUPT_CARD_PAGE, {
31-
backLinkUrl,
22+
backLinkUrl: config.SECURE_UPDATE_FILTER_URL,
3223
templateName: config.UPDATE_INTERRUPT_CARD_PAGE,
3324
});
3425
} catch (error) {

src/utils/secure.filter.ts

Lines changed: 19 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
11
import { NextFunction, Request, Response } from "express";
22
import { ApplicationData } from "../model";
3+
import { IsSecureRegisterKey, OverseasEntityKey, Transactionkey } from "../model/data.types.model";
4+
import { fetchApplicationData, setExtraData } from "./application.data";
35
import { logger } from "./logger";
6+
import { isRegistrationJourney, getUrlWithTransactionIdAndSubmissionId, isRemoveJourney } from "../utils/url";
47
import * as config from "../config";
58
import { isActiveFeature } from "./feature.flag";
69

710
import { Session } from "@companieshouse/node-session-handler";
8-
import { postTransaction } from "../service/transaction.service";
9-
10-
import { IsSecureRegisterKey, OverseasEntityKey, Transactionkey } from "../model/data.types.model";
11-
import { getApplicationData, setExtraData } from "./application.data";
12-
import { createOverseasEntity, updateOverseasEntity } from "../service/overseas.entities.service";
1311

14-
import {
15-
getUrlWithTransactionIdAndSubmissionId,
16-
isRemoveJourney,
17-
isUpdateJourney
18-
} from "../utils/url";
12+
import { updateOverseasEntity } from "../service/overseas.entities.service";
1913

2014
export const getFilterPage = async (req: Request, res: Response, next: NextFunction, templateName: string, backLinkUrl: string): Promise<void> => {
2115

2216
try {
2317

2418
logger.debugRequest(req, `${req.method} ${req.route.path}`);
2519

20+
const isRegistration = isRegistrationJourney(req);
2621
const isRemove = await isRemoveJourney(req);
27-
const appData: ApplicationData = await getApplicationData(req, true);
22+
const appData: ApplicationData = await fetchApplicationData(req, isRegistration);
2823

2924
if (isRemove) {
3025
return res.render(templateName, {
@@ -59,24 +54,31 @@ export const postFilterPage = async (
5954

6055
logger.debugRequest(req, `${req.method} ${req.route.path}`);
6156

62-
const isRedisRemovalFlag = isActiveFeature(config.FEATURE_FLAG_ENABLE_REDIS_REMOVAL);
63-
const isUpdate: boolean = await isUpdateJourney(req);
57+
const isRegistration: boolean = isRegistrationJourney(req);
6458
const isRemove: boolean = await isRemoveJourney(req);
65-
const appData: ApplicationData = await getApplicationData(req, true);
59+
const appData: ApplicationData = await fetchApplicationData(req, isRegistration);
6660
const isSecureRegister = (req.body[IsSecureRegisterKey]).toString();
6761
appData[IsSecureRegisterKey] = isSecureRegister;
62+
const session = req.session as Session;
6863

6964
let nextPageUrl: string = "";
7065

7166
if (isSecureRegister === "1") {
7267
nextPageUrl = isSecureRegisterYesUrl;
68+
if (isActiveFeature(config.FEATURE_FLAG_ENABLE_REDIS_REMOVAL) && isRegistration) {
69+
nextPageUrl = getUrlWithTransactionIdAndSubmissionId(isSecureRegisterYesUrl, appData[Transactionkey] as string, appData[OverseasEntityKey] as string);
70+
}
7371
}
7472

7573
if (isSecureRegister === "0") {
7674
nextPageUrl = isSecureRegisterNoUrl;
77-
if (isRedisRemovalFlag && !isRemove) {
78-
await createOrUpdateEntityDetails(req, appData, isUpdate);
79-
nextPageUrl = getNextPageUrl(appData, isSecureRegisterNoUrl, isRemove, isRedisRemovalFlag);
75+
if (isActiveFeature(config.FEATURE_FLAG_ENABLE_REDIS_REMOVAL) && isRegistration) {
76+
if (appData[Transactionkey] && appData[OverseasEntityKey]) {
77+
await updateOverseasEntity(req, session, appData);
78+
} else {
79+
throw new Error("Error: is_secure_register filter cannot be updated - transaction_id or overseas_entity_id is missing");
80+
}
81+
nextPageUrl = getUrlWithTransactionIdAndSubmissionId(isSecureRegisterNoUrl, appData[Transactionkey] as string, appData[OverseasEntityKey] as string);
8082
}
8183
}
8284

@@ -92,32 +94,3 @@ export const postFilterPage = async (
9294
next(error);
9395
}
9496
};
95-
96-
const createOrUpdateEntityDetails = async (req: Request, appData: ApplicationData, isUpdate: boolean): Promise<void> => {
97-
98-
const session = req.session as Session;
99-
100-
if (isUpdate && !appData[Transactionkey]) {
101-
const transactionID = await postTransaction(req, session);
102-
appData[Transactionkey] = transactionID;
103-
appData[OverseasEntityKey] = await createOverseasEntity(req, session, transactionID);
104-
}
105-
106-
if (appData[Transactionkey] && appData[OverseasEntityKey]) {
107-
await updateOverseasEntity(req, session, appData);
108-
} else {
109-
throw new Error("Error: is_secure_register filter cannot be updated - transaction_id or overseas_entity_id is missing");
110-
}
111-
};
112-
113-
const getNextPageUrl = (appData: ApplicationData, fallbackUrl: string, isRemove: boolean, isRedisRemovalFlag: boolean): string => {
114-
try {
115-
if (isRedisRemovalFlag && !isRemove) {
116-
return getUrlWithTransactionIdAndSubmissionId(fallbackUrl, appData[Transactionkey] as string, appData[OverseasEntityKey] as string);
117-
}
118-
return fallbackUrl;
119-
} catch (error) {
120-
logger.error(`Error generating nextPageUrl with transactionId and submissionId: ${error}`);
121-
return fallbackUrl;
122-
}
123-
};

src/utils/url.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,12 @@ import { getApplicationData } from "./application.data";
55
import { Session } from "@companieshouse/node-session-handler";
66
import { IsRemoveKey } from "../model/data.types.model";
77
import { createAndLogErrorRequest, logger } from "./logger";
8-
import { isActiveFeature } from "./feature.flag";
98

10-
interface BackLinkUrlDependencies {
11-
req: Request;
12-
urlWithEntityIds: string;
13-
urlWithoutEntityIds: string;
14-
}
159
export interface TransactionIdAndSubmissionId {
1610
transactionId: string;
1711
submissionId: string;
1812
}
1913

20-
export const getBackLinkUrl = ({
21-
req,
22-
urlWithEntityIds,
23-
urlWithoutEntityIds,
24-
}: BackLinkUrlDependencies): string => {
25-
try {
26-
const ids = getTransactionIdAndSubmissionIdFromOriginalUrl(req);
27-
28-
if (
29-
!isActiveFeature(config.FEATURE_FLAG_ENABLE_REDIS_REMOVAL) ||
30-
typeof ids === "undefined"
31-
) {
32-
return urlWithoutEntityIds;
33-
}
34-
return getUrlWithTransactionIdAndSubmissionId(
35-
urlWithEntityIds,
36-
ids[config.ROUTE_PARAM_TRANSACTION_ID],
37-
ids[config.ROUTE_PARAM_SUBMISSION_ID]
38-
);
39-
} catch (error) {
40-
logger.errorRequest(req, error);
41-
return urlWithoutEntityIds;
42-
}
43-
};
44-
4514
export const getUrlWithTransactionIdAndSubmissionId = (url: string, transactionId: string, submissionId: string): string => {
4615
url = url
4716
.replace(`:${config.ROUTE_PARAM_TRANSACTION_ID}`, transactionId)

test/controllers/secure.register.filter.controller.spec.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ describe( "SECURE REGISTER FILTER controller", () => {
9696
describe("GET tests", () => {
9797

9898
test(`renders the ${config.SECURE_REGISTER_FILTER_PAGE} page`, async () => {
99-
mockGetApplicationData.mockReturnValueOnce({});
99+
mockFetchApplicationData.mockReturnValueOnce({});
100100
const resp = await request(app).get(SECURE_REGISTER_FILTER_URL);
101101

102102
expect(resp.status).toEqual(200);
@@ -113,7 +113,7 @@ describe( "SECURE REGISTER FILTER controller", () => {
113113
test(`renders the ${config.SECURE_REGISTER_FILTER_PAGE} page and REDIS_removal flag is set to OFF`, async () => {
114114
mockIsActiveFeature.mockReturnValueOnce(false);
115115
mockGetUrlWithParamsToPath.mockReturnValueOnce('/some-url');
116-
mockGetApplicationData.mockReturnValueOnce({});
116+
mockFetchApplicationData.mockReturnValueOnce({});
117117
mockIsRemoveJourney.mockReturnValue(false);
118118
const resp = await request(app).get(SECURE_REGISTER_FILTER_URL);
119119

@@ -132,9 +132,9 @@ describe( "SECURE REGISTER FILTER controller", () => {
132132
});
133133

134134
test(`renders the ${config.SECURE_REGISTER_FILTER_PAGE} page and REDIS_removal flag is set to ON`, async () => {
135-
mockIsActiveFeature.mockReturnValue(true);
135+
mockIsActiveFeature.mockReturnValueOnce(true);
136136
mockGetUrlWithParamsToPath.mockReturnValueOnce('/some-url');
137-
mockGetApplicationData.mockReturnValueOnce({});
137+
mockFetchApplicationData.mockReturnValueOnce({});
138138
mockIsRemoveJourney.mockReturnValue(false);
139139
const resp = await request(app).get(SECURE_REGISTER_FILTER_WITH_PARAMS_URL);
140140

@@ -162,7 +162,7 @@ describe( "SECURE REGISTER FILTER controller", () => {
162162
});
163163

164164
test(`renders the ${config.SECURE_REGISTER_FILTER_PAGE} page with radios selected to yes`, async () => {
165-
mockGetApplicationData.mockReturnValueOnce({ is_secure_register: 1 });
165+
mockFetchApplicationData.mockReturnValueOnce({ is_secure_register: 1 });
166166
const resp = await request(app).get(SECURE_REGISTER_FILTER_URL);
167167

168168
expect(resp.status).toEqual(200);
@@ -194,10 +194,10 @@ describe( "SECURE REGISTER FILTER controller", () => {
194194

195195
test(`renders the ${config.USE_PAPER_PAGE} page when yes is selected and REDIS_removal flag is set to ON`, async () => {
196196
mockIsActiveFeature.mockReturnValueOnce(true);
197-
mockGetApplicationData.mockReturnValue(APPLICATION_DATA_MOCK);
197+
mockGetApplicationData.mockReturnValueOnce(APPLICATION_DATA_MOCK);
198198
mockIsActiveFeature.mockReturnValueOnce(true);
199-
mockIsRemoveJourney.mockReturnValue(false);
200-
mockUpdateOverseasEntity.mockReturnValue(true);
199+
mockIsRemoveJourney.mockReturnValueOnce(false);
200+
mockUpdateOverseasEntity.mockReturnValueOnce(true);
201201
const resp = await request(app)
202202
.post(config.SECURE_REGISTER_FILTER_URL)
203203
.send({ is_secure_register: "1" });
@@ -223,8 +223,10 @@ describe( "SECURE REGISTER FILTER controller", () => {
223223
});
224224

225225
test(`renders the ${config.INTERRUPT_CARD_PAGE} page when no is selected and REDIS_removal flag is set to ON`, async () => {
226-
mockIsActiveFeature.mockReturnValue(true);
226+
mockIsActiveFeature.mockReturnValueOnce(true);
227+
mockIsActiveFeature.mockReturnValueOnce(true);
227228
mockGetApplicationData.mockReturnValueOnce(APPLICATION_DATA_MOCK);
229+
mockIsActiveFeature.mockReturnValueOnce(true);
228230
mockIsRemoveJourney.mockReturnValueOnce(false);
229231
mockUpdateOverseasEntity.mockReturnValueOnce(true);
230232
mockGetUrlWithTransactionIdAndSubmissionId.mockReturnValueOnce(config.INTERRUPT_CARD_WITH_PARAMS_URL);

test/controllers/update/secure.update.filter.controller.spec.ts

Lines changed: 5 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import { logger } from "../../../src/utils/logger";
2424
import { isActiveFeature } from "../../../src/utils/feature.flag";
2525
import { postTransaction } from "../../../src/service/transaction.service";
2626

27-
import { createOverseasEntity, updateOverseasEntity } from "../../../src/service/overseas.entities.service";
2827
import { getApplicationData, setExtraData, fetchApplicationData } from "../../../src/utils/application.data";
2928

3029
import {
@@ -53,9 +52,8 @@ import {
5352
REMOVE_IS_ENTITY_REGISTERED_OWNER_URL,
5453
REMOVE_SERVICE_NAME,
5554
SECURE_UPDATE_FILTER_PAGE,
56-
SECURE_UPDATE_FILTER_URL, SECURE_UPDATE_FILTER_WITH_PARAMS_URL,
55+
SECURE_UPDATE_FILTER_URL,
5756
UPDATE_INTERRUPT_CARD_URL,
58-
UPDATE_LANDING_PAGE_URL,
5957
UPDATE_SERVICE_NAME,
6058
UPDATE_USE_PAPER_URL
6159
} from "../../../src/config";
@@ -84,8 +82,6 @@ mockGetUrlWithTransactionIdAndSubmissionId.mockReturnValue(MOCKED_PAGE_URL);
8482
const mockLoggerDebugRequest = logger.debugRequest as jest.Mock;
8583
const mockGetApplicationData = getApplicationData as jest.Mock;
8684
const mockSetExtraData = setExtraData as jest.Mock;
87-
const mockUpdateOverseasEntity = updateOverseasEntity as jest.Mock;
88-
const mockCreateOverseasEntity = createOverseasEntity as jest.Mock;
8985

9086
const mockPostTransactionService = postTransaction as jest.Mock;
9187
mockPostTransactionService.mockReturnValue(TRANSACTION_ID);
@@ -103,36 +99,16 @@ describe("SECURE UPDATE FILTER controller", () => {
10399

104100
describe("GET tests", () => {
105101

106-
test(`renders the ${SECURE_UPDATE_FILTER_PAGE} page when REDIS_removal flag is set to OFF`, async () => {
107-
mockGetApplicationData.mockReturnValueOnce({ });
102+
test(`renders the ${SECURE_UPDATE_FILTER_PAGE} page`, async () => {
103+
mockFetchApplicationData.mockReturnValueOnce({ });
108104
const resp = await request(app).get(SECURE_UPDATE_FILTER_URL);
109105
expect(resp.status).toEqual(200);
110106
expect(resp.text).toContain(UPDATE_SERVICE_NAME);
111-
expect(resp.text).toContain(SECURE_UPDATE_FILTER_PAGE_HEADING);
112-
expect(resp.text).toContain(UPDATE_LANDING_PAGE_URL);
113-
expect(resp.text).not.toContain(RADIO_BUTTON_YES_SELECTED);
114-
expect(resp.text).not.toContain(RADIO_BUTTON_NO_SELECTED);
115-
expect(resp.text).not.toContain(PAGE_TITLE_ERROR);
116-
});
117-
118-
test(`renders the ${SECURE_UPDATE_FILTER_PAGE} page when REDIS_removal flag is set to ON`, async () => {
119-
mockIsActiveFeature.mockReturnValue(true);
120-
mockGetApplicationData.mockReturnValueOnce({ });
121-
122-
const resp = await request(app).get(SECURE_UPDATE_FILTER_WITH_PARAMS_URL);
123-
124-
expect(resp.status).toEqual(200);
125-
expect(resp.text).toContain(UPDATE_SERVICE_NAME);
126-
expect(resp.text).toContain(SECURE_UPDATE_FILTER_PAGE_HEADING);
127-
expect(resp.text).toContain(UPDATE_LANDING_PAGE_URL);
128-
expect(resp.text).not.toContain(RADIO_BUTTON_YES_SELECTED);
129-
expect(resp.text).not.toContain(RADIO_BUTTON_NO_SELECTED);
130-
expect(resp.text).not.toContain(PAGE_TITLE_ERROR);
131107
});
132108

133109
test(`renders the ${SECURE_UPDATE_FILTER_PAGE} page for remove`, async () => {
134110
mockIsActiveFeature.mockReturnValueOnce(false);
135-
mockGetApplicationData.mockReturnValueOnce({});
111+
mockFetchApplicationData.mockReturnValueOnce({});
136112
mockIsActiveFeature.mockReturnValueOnce(false);
137113
mockIsRemoveJourney.mockReturnValueOnce(true);
138114
const resp = await request(app).get(`${SECURE_UPDATE_FILTER_URL}${JOURNEY_REMOVE_QUERY_PARAM}`);
@@ -155,7 +131,7 @@ describe("SECURE UPDATE FILTER controller", () => {
155131
});
156132

157133
test(`renders the ${SECURE_UPDATE_FILTER_PAGE} page with radios selected to yes`, async () => {
158-
mockGetApplicationData.mockReturnValueOnce({ is_secure_register: 1 });
134+
mockFetchApplicationData.mockReturnValueOnce({ is_secure_register: 1 });
159135
const resp = await request(app).get(SECURE_UPDATE_FILTER_URL);
160136

161137
expect(resp.status).toEqual(200);
@@ -187,24 +163,6 @@ describe("SECURE UPDATE FILTER controller", () => {
187163
expect(mockSetExtraData).toHaveBeenCalledTimes(1);
188164
});
189165

190-
test ("if REDIS_removal flag is ON, update the entity when transactionKey and overseasEntityKey are present, and redirect to update-interrupt-card, with entity IDs in URL", async () => {
191-
mockIsActiveFeature.mockReturnValue(true);
192-
mockGetApplicationData.mockReturnValueOnce(APPLICATION_DATA_MOCK);
193-
mockIsRemoveJourney.mockReturnValueOnce(false);
194-
mockUpdateOverseasEntity.mockReturnValueOnce(true);
195-
mockCreateOverseasEntity.mockReturnValueOnce(false);
196-
197-
const resp = await request(app)
198-
.post(SECURE_UPDATE_FILTER_WITH_PARAMS_URL)
199-
.send({ is_secure_register: "0" });
200-
201-
expect(resp.status).toEqual(302);
202-
expect(resp.header.location).toEqual(MOCKED_PAGE_URL);
203-
expect(mockCreateOverseasEntity).not.toHaveBeenCalled();
204-
expect(mockGetUrlWithTransactionIdAndSubmissionId).toHaveBeenCalledTimes(1);
205-
expect(mockSetExtraData).toHaveBeenCalledTimes(1);
206-
});
207-
208166
test("renders the current page with error message", async () => {
209167
const resp = await request(app)
210168
.post(SECURE_UPDATE_FILTER_URL);

0 commit comments

Comments
 (0)