Skip to content

Commit ad182a3

Browse files
Fix: [AEA-5834] - Fix log levels (#1411)
## Summary - Routine Change ### Details Altered log levels for known login and search outcomes and fixed search navigation issue when no parameters are provided --------- Co-authored-by: tstephen-nhs <[email protected]>
1 parent 64e1d81 commit ad182a3

File tree

6 files changed

+40
-30
lines changed

6 files changed

+40
-30
lines changed

packages/cpt-ui/__tests__/EpsPrescriptionList.test.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -391,8 +391,8 @@ describe("PrescriptionListPage", () => {
391391
})
392392
})
393393

394-
it("logs an error when no query parameters are present", async () => {
395-
const loggerErrorSpy = jest.spyOn(logger, "error").mockImplementation(() => {})
394+
it("logs when no query parameters are present", async () => {
395+
const loggerInfoSpy = jest.spyOn(logger, "info").mockImplementation(() => {})
396396

397397
mockedAxios.get.mockResolvedValue({
398398
status: 200,
@@ -402,10 +402,12 @@ describe("PrescriptionListPage", () => {
402402
renderWithRouter(FRONTEND_PATHS.PRESCRIPTION_LIST_CURRENT)
403403

404404
await waitFor(() => {
405-
expect(loggerErrorSpy).toHaveBeenCalledWith("No query parameter provided.")
405+
expect(loggerInfoSpy).toHaveBeenCalledWith(
406+
"No search parameter provided - redirecting to prescription ID search"
407+
)
406408
})
407409

408-
loggerErrorSpy.mockRestore()
410+
loggerInfoSpy.mockRestore()
409411
})
410412

411413
it("sets the back link to the prescription ID search when prescriptionId query parameter is present", async () => {

packages/cpt-ui/__tests__/sessionManagementHelper.test.tsx

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ const mockedAxios = axios as jest.Mocked<typeof axios>
99
jest.mock("@/helpers/logger", () => ({
1010
logger: {
1111
info: jest.fn(),
12-
error: jest.fn()
12+
error: jest.fn(),
13+
warn: jest.fn()
1314
}
1415
}))
1516

@@ -87,25 +88,24 @@ describe("postSessionManagementUpdate", () => {
8788
})
8889

8990
expect(logger.error).toHaveBeenCalledWith(
90-
"Error calling session management or updating user info"
91+
"Error calling session management or updating user info",
92+
{"data": {"status": "Active"}, "status": 500}
9193
)
9294
expect(mockAuth.updateTrackerUserInfo).not.toHaveBeenCalled()
9395
expect(redirect).not.toHaveBeenCalled()
9496
expect(result).toBe(false)
9597
})
9698

9799
it("handles http.post throwing an exception", async () => {
98-
mockedAxios.post.mockRejectedValue(new Error("Network error"))
100+
const error = new Error("Network error")
101+
mockedAxios.post.mockRejectedValue(error)
99102

100103
const result = await postSessionManagementUpdate(mockAuth)
101104

102105
expect(mockedAxios.post).toHaveBeenCalledWith("/api/session-management", {
103106
action: "Set-Session"
104107
})
105-
expect(logger.error).toHaveBeenCalledWith(
106-
"Error calling session management or updating user info",
107-
"Network error"
108-
)
108+
expect(logger.error).toHaveBeenCalledWith("Error calling session management or updating user info", error)
109109
expect(mockAuth.updateTrackerUserInfo).not.toHaveBeenCalled()
110110
expect(redirect).not.toHaveBeenCalled()
111111
expect(result).toBe(false)
@@ -121,7 +121,7 @@ describe("postSessionManagementUpdate", () => {
121121
})
122122
expect(logger.error).toHaveBeenCalledWith(
123123
"Error calling session management or updating user info",
124-
"Error calling session management or updating user info"
124+
"Something went wrong"
125125
)
126126
expect(mockAuth.updateTrackerUserInfo).not.toHaveBeenCalled()
127127
expect(redirect).not.toHaveBeenCalled()
@@ -133,7 +133,8 @@ describe("postSessionManagementUpdate", () => {
133133
status: 202,
134134
data: {status: "Active"}
135135
})
136-
mockAuth.updateTrackerUserInfo.mockRejectedValue(new Error("Update failed"))
136+
const error = new Error("Update failed")
137+
mockAuth.updateTrackerUserInfo.mockRejectedValue(error)
137138

138139
const result = await postSessionManagementUpdate(mockAuth)
139140

@@ -143,10 +144,7 @@ describe("postSessionManagementUpdate", () => {
143144

144145
expect(logger.info).toHaveBeenCalledWith("Session is now active.")
145146
expect(mockAuth.updateTrackerUserInfo).toHaveBeenCalled()
146-
expect(logger.error).toHaveBeenCalledWith(
147-
"Error calling session management or updating user info",
148-
"Update failed"
149-
)
147+
expect(logger.error).toHaveBeenCalledWith("Error calling session management or updating user info", error)
150148
expect(redirect).not.toHaveBeenCalled()
151149
expect(result).toBe(false)
152150
})

packages/cpt-ui/src/helpers/sessionManagement.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const postSessionManagementUpdate = async (auth: AuthContextType): Promis
1212
logger.info(`Called session management, ${response.data}`)
1313

1414
if (response.status === 401) {
15-
logger.error("Session expired or invalid. Restarting login.")
15+
logger.warn("Session expired or invalid. Restarting login.")
1616
return false
1717
}
1818

@@ -24,12 +24,11 @@ export const postSessionManagementUpdate = async (auth: AuthContextType): Promis
2424
logger.info("Updated tracker info")
2525
return true
2626
}
27-
logger.error("Error calling session management or updating user info")
27+
logger.error("Error calling session management or updating user info", response)
2828
return false
2929

3030
} catch (err) {
31-
const error = err instanceof Error ? err.message : "Error calling session management or updating user info"
32-
logger.error("Error calling session management or updating user info", error)
31+
logger.error("Error calling session management or updating user info", err)
3332
return false
3433
}
3534
}

packages/cpt-ui/src/helpers/userInfo.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,12 @@ export const getTrackerUserInfo = async (): Promise<TrackerUserInfoResult> => {
8181
} else {
8282
error = "Failed to fetch user info"
8383
}
84-
logger.error("Error fetching tracker user info:", err)
84+
85+
if (!invalidSessionCause) {
86+
logger.error("Error fetching tracker user info:", err)
87+
} else {
88+
logger.warn("trackerUserInfo triggered restart login due to:", invalidSessionCause)
89+
}
8590
}
8691
return {
8792
rolesWithAccess,

packages/cpt-ui/src/pages/PrescriptionDetailsPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ export default function PrescriptionDetailsPage() {
8383
} catch (err) {
8484
if (axios.isAxiosError(err) && (err.response?.status === 401)) {
8585
const invalidSessionCause = err.response?.data?.invalidSessionCause
86+
logger.warn("prescriptionDetails triggered restart login due to:", invalidSessionCause)
8687
handleRestartLogin(auth, invalidSessionCause)
8788
return
8889
}
@@ -107,7 +108,7 @@ export default function PrescriptionDetailsPage() {
107108

108109
const prescriptionId = searchContext.prescriptionId
109110
if (!prescriptionId) {
110-
logger.error("No prescriptionId provided - redirecting to search")
111+
logger.info("No prescriptionId provided - redirecting to search")
111112
navigate(FRONTEND_PATHS.SEARCH_BY_PRESCRIPTION_ID)
112113
return
113114
}

packages/cpt-ui/src/pages/PrescriptionListPage.tsx

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, {Fragment, useEffect, useState} from "react"
2-
import {Link} from "react-router-dom"
2+
import {Link, useNavigate} from "react-router-dom"
33
import {
44
BackLink,
55
Col,
@@ -20,7 +20,7 @@ import UnknownErrorMessage from "@/components/UnknownErrorMessage"
2020

2121
import {PRESCRIPTION_LIST_TABS} from "@/constants/ui-strings/PrescriptionListTabStrings"
2222
import {PRESCRIPTION_LIST_PAGE_STRINGS} from "@/constants/ui-strings/PrescriptionListPageStrings"
23-
import {API_ENDPOINTS} from "@/constants/environment"
23+
import {API_ENDPOINTS, FRONTEND_PATHS} from "@/constants/environment"
2424

2525
import {SearchResponse, PrescriptionSummary} from "@cpt-ui-common/common-types/src/prescriptionList"
2626

@@ -49,6 +49,7 @@ export default function PrescriptionListPage() {
4949
const backLinkUrl = buildBackLink(searchType, searchContext)
5050

5151
const auth = useAuth()
52+
const navigate = useNavigate()
5253

5354
useEffect(() => {
5455
const runSearch = async () => {
@@ -63,8 +64,8 @@ export default function PrescriptionListPage() {
6364
} else if (searchContext.nhsNumber) {
6465
searchParams.append("nhsNumber", searchContext.nhsNumber)
6566
} else {
66-
logger.error("No query parameter provided.")
67-
setLoading(false)
67+
logger.info("No search parameter provided - redirecting to prescription ID search")
68+
navigate(FRONTEND_PATHS.SEARCH_BY_PRESCRIPTION_ID)
6869
return
6970
}
7071

@@ -75,7 +76,7 @@ export default function PrescriptionListPage() {
7576

7677
logger.info("Response status", {status: response.status})
7778
if (response.status === 404) {
78-
logger.error("No search results were returned")
79+
logger.warn("No search results were returned")
7980
setShowNotFound(true)
8081
setLoading(false)
8182
return
@@ -90,7 +91,7 @@ export default function PrescriptionListPage() {
9091
searchResults.pastPrescriptions.length === 0 &&
9192
searchResults.futurePrescriptions.length === 0
9293
) {
93-
logger.error("A patient was returned, but they do not have any prescriptions.", searchResults)
94+
logger.warn("A patient was returned, but they do not have any prescriptions.", searchResults)
9495
setPatientDetails(searchResults.patient)
9596
setShowNotFound(true)
9697
setLoading(false)
@@ -122,22 +123,26 @@ export default function PrescriptionListPage() {
122123
])
123124
setLoading(false)
124125
} catch (err) {
125-
logger.error("Error during search", err)
126126
if (axios.isAxiosError(err)) {
127127
if ((err.response?.status === 401) && err.response.data?.restartLogin) {
128128
const invalidSessionCause = err.response?.data?.invalidSessionCause
129+
logger.warn("prescriptionList triggered restart login due to:", invalidSessionCause)
129130
handleRestartLogin(auth, invalidSessionCause)
130131
return
131132
} else if (err.response?.status === 404) {
133+
logger.warn("No search results were returned", err)
132134
setShowNotFound(true)
133135
} else {
134136
setError(true)
137+
logger.error("Error during search", err)
135138
}
136139
} else if (err instanceof Error && err.message === "canceled") {
140+
logger.warn("Signing out due to request cancellation")
137141
signOut(auth, AUTH_CONFIG.REDIRECT_SIGN_OUT)
138142
return
139143
} else {
140144
setError(true)
145+
logger.error("Error during search", err)
141146
}
142147
setLoading(false)
143148
}

0 commit comments

Comments
 (0)