Skip to content

Commit c5265bd

Browse files
authored
🐛 Address required status bug (#1843)
Resolves https://issues.redhat.com/browse/MTA-2505 - Adds additional unit test coverage Signed-off-by: Ian Bolton <[email protected]>
1 parent 276bedd commit c5265bd

File tree

2 files changed

+109
-4
lines changed

2 files changed

+109
-4
lines changed

client/src/app/hooks/useAssessmentStatus.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ export const useAssessmentStatus = (application: Application) => {
6565

6666
const hasApplicationAssessmentInProgress = applicationAssessments?.some(
6767
(assessment: Assessment) =>
68-
assessment.status === "started" ||
69-
assessment.status === "empty" ||
70-
(assessment.status === "complete" &&
71-
application.assessments?.length !== 0)
68+
assessment.required &&
69+
(assessment.status === "started" ||
70+
assessment.status === "empty" ||
71+
(assessment.status === "complete" &&
72+
application.assessments?.length !== 0))
7273
);
7374

7475
return {

client/src/app/pages/applications/components/application-assessment-status/tests/application-assessment-status.test.tsx

+104
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,110 @@ describe("useAssessmentStatus", () => {
2020
server.resetHandlers();
2121
});
2222

23+
it("Updates hasApplicationAssessmentInProgress to false when assessment is marked as not required", async () => {
24+
server.use(
25+
rest.get("/hub/archetypes", (req, res, ctx) => {
26+
return res(
27+
ctx.json([
28+
createMockArchetype({
29+
id: 1,
30+
name: "archetype1",
31+
applications: [],
32+
assessed: false,
33+
assessments: [],
34+
}),
35+
])
36+
);
37+
}),
38+
rest.get("/hub/assessments", (req, res, ctx) => {
39+
return res(
40+
ctx.json([
41+
createMockAssessment({
42+
id: 1,
43+
application: { id: 1, name: "app1" },
44+
questionnaire: { id: 1, name: "questionnaire1" },
45+
status: "started",
46+
required: true,
47+
sections: [],
48+
}),
49+
createMockAssessment({
50+
id: 2,
51+
application: { id: 1, name: "app1" },
52+
questionnaire: { id: 2, name: "questionnaire2" },
53+
status: "complete",
54+
required: true,
55+
sections: [],
56+
}),
57+
])
58+
);
59+
})
60+
);
61+
62+
const queryClient = new QueryClient({
63+
defaultOptions: {
64+
queries: {
65+
retry: false,
66+
cacheTime: 1000,
67+
},
68+
},
69+
});
70+
71+
const { result, rerender } = renderHook(
72+
() => useAssessmentStatus(createMockApplication({ id: 1, name: "app1" })),
73+
{ queryClient }
74+
);
75+
76+
await waitFor(() => {
77+
expect(result.current.hasApplicationAssessmentInProgress).toBe(true);
78+
});
79+
80+
server.use(
81+
rest.get("/hub/archetypes", (req, res, ctx) => {
82+
return res(
83+
ctx.json([
84+
createMockArchetype({
85+
id: 1,
86+
name: "archetype1",
87+
applications: [],
88+
assessed: false,
89+
assessments: [],
90+
}),
91+
])
92+
);
93+
}),
94+
rest.get("/hub/assessments", (req, res, ctx) => {
95+
return res(
96+
ctx.json([
97+
createMockAssessment({
98+
id: 1,
99+
application: { id: 1, name: "app1" },
100+
questionnaire: { id: 1, name: "questionnaire1" },
101+
status: "started",
102+
required: false,
103+
sections: [],
104+
}),
105+
createMockAssessment({
106+
id: 2,
107+
application: { id: 1, name: "app1" },
108+
questionnaire: { id: 2, name: "questionnaire2" },
109+
status: "complete",
110+
required: false,
111+
sections: [],
112+
}),
113+
])
114+
);
115+
})
116+
);
117+
118+
queryClient.invalidateQueries([assessmentsQueryKey]);
119+
120+
rerender(createMockApplication({ id: 1, name: "app1" }));
121+
122+
await waitFor(() => {
123+
expect(result.current.hasApplicationAssessmentInProgress).toBe(false);
124+
});
125+
});
126+
23127
it("Updates hasApplicationAssessmentInProgress to false once associated assessments are deleted", async () => {
24128
server.use(
25129
rest.get("/hub/assessments", (req, res, ctx) => {

0 commit comments

Comments
 (0)