Skip to content

Commit 6163460

Browse files
Fix sonarcloud issue
1 parent 3edf4d7 commit 6163460

File tree

4 files changed

+120
-2
lines changed

4 files changed

+120
-2
lines changed

Diff for: services/common/src/redux/selectors/permitSelectors.spec.ts

+14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {
22
formatPermit,
3+
getAmendment,
34
getEditingConditionFlag,
45
getEditingPreambleFlag,
56
getLatestAmendmentByPermitGuid,
@@ -70,3 +71,16 @@ describe("permitSelectors", () => {
7071
expect(latestAmendment).toEqual(MOCK.PERMITS[0].permit_amendments[0]);
7172
});
7273
});
74+
it("getAmendment returns the correct permit amendment", () => {
75+
const localMockState = {
76+
[PERMITS]: { permits: mockPermits },
77+
};
78+
const permit = MOCK.PERMITS[0];
79+
const amendment = permit.permit_amendments[0];
80+
81+
const actual = getAmendment(permit.permit_guid, amendment.permit_amendment_guid)(
82+
localMockState as RootState
83+
);
84+
85+
expect(actual).toEqual(amendment);
86+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
import { fetchPermitConditionDiff, getPermitConditionDiff, IPermitConditionDiffState } from "./permitConditionDiffSlice";
2+
import { configureStore } from "@reduxjs/toolkit";
3+
import CustomAxios from "../customAxios";
4+
import { ENVIRONMENT } from "@mds/common/constants/environment";
5+
import { MINE } from "@mds/common/constants/API";
6+
import { createRequestHeader } from "../utils/RequestHeaders";
7+
import { IPermitConditionChangeType, IPermitConditionComparison } from "@mds/common/interfaces/permits";
8+
9+
jest.mock("../customAxios");
10+
jest.mock("../utils/RequestHeaders");
11+
12+
describe("permitConditionDiffSlice", () => {
13+
const mockStore = configureStore({
14+
reducer: {
15+
permitConditionDiff: (state = { diffs: {}, isLoading: false }, action) => state
16+
}
17+
});
18+
19+
const mockAxios = {
20+
get: jest.fn()
21+
};
22+
23+
const mockParams = {
24+
mineGuid: "test-mine-guid",
25+
permitGuid: "test-permit-guid",
26+
amendmentGuid: "test-amendment-guid"
27+
};
28+
29+
const mockResponse: { data: { comparison: IPermitConditionComparison[] } } = {
30+
data: {
31+
comparison: [{
32+
previous_condition_guid: "test-previous-condition-guid",
33+
text_similarity: 0.5,
34+
structure_similarity: 0.5,
35+
combined_score: 0.5,
36+
change_type: IPermitConditionChangeType.ADDED
37+
}]
38+
}
39+
};
40+
beforeEach(() => {
41+
(CustomAxios as jest.Mock).mockReturnValue(mockAxios);
42+
(createRequestHeader as jest.Mock).mockReturnValue({ headers: {} });
43+
mockAxios.get.mockResolvedValue(mockResponse);
44+
});
45+
46+
afterEach(() => {
47+
jest.clearAllMocks();
48+
});
49+
50+
describe("fetchPermitConditionDiff", () => {
51+
it("should make API call with correct parameters", async () => {
52+
await mockStore.dispatch(fetchPermitConditionDiff(mockParams));
53+
54+
expect(mockAxios.get).toHaveBeenCalledWith(
55+
`${ENVIRONMENT.apiUrl}${MINE}/${mockParams.mineGuid}/permits/${mockParams.permitGuid}/amendments/${mockParams.amendmentGuid}/diff`,
56+
{ headers: {} }
57+
);
58+
});
59+
60+
it("should handle successful API response", async () => {
61+
const result = await mockStore.dispatch(fetchPermitConditionDiff(mockParams));
62+
63+
expect(result.payload).toEqual({
64+
key: mockParams.amendmentGuid,
65+
data: mockResponse.data.comparison
66+
});
67+
});
68+
69+
it("should handle API error", async () => {
70+
const error = new Error("API Error");
71+
mockAxios.get.mockRejectedValue(error);
72+
73+
const res = await mockStore.dispatch(fetchPermitConditionDiff(mockParams));
74+
expect(res.error?.message).toBe("API Error");
75+
});
76+
});
77+
78+
describe("getPermitConditionDiff selector", () => {
79+
it("should return diff data for given amendmentGuid", () => {
80+
const state = {
81+
permitConditionDiff: {
82+
diffs: {
83+
"test-amendment-guid": mockResponse.data.comparison
84+
},
85+
isLoading: false
86+
}
87+
};
88+
89+
const result = getPermitConditionDiff(state, "test-amendment-guid");
90+
expect(result).toEqual(mockResponse.data.comparison);
91+
});
92+
93+
it("should return undefined for non-existent amendmentGuid", () => {
94+
const state = {
95+
permitConditionDiff: {
96+
diffs: {},
97+
isLoading: false
98+
}
99+
};
100+
101+
const result = getPermitConditionDiff(state, "non-existent-guid");
102+
expect(result).toBeUndefined();
103+
});
104+
});
105+
});

Diff for: services/common/src/redux/slices/permitConditionDiffSlice.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { createRequestHeader } from "../utils/RequestHeaders";
55
import { createAppSlice, rejectHandler } from "@mds/common/redux/createAppSlice";
66
import { IPermitConditionComparison } from "@mds/common/interfaces/permits";
77

8-
interface IPermitConditionDiffState {
8+
export interface IPermitConditionDiffState {
99
diffs: { [key: string]: IPermitConditionComparison[] };
1010
isLoading: boolean;
1111
}

Diff for: services/common/src/tests/mocks/dataMocks.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1159,7 +1159,6 @@ export const PERMITS: IPermit[] = [
11591159
permit_amendments: [
11601160
{
11611161
permit_amendment_id: 2,
1162-
permit_amendment_guid: "b1b1b1b1-b1b1-b1b1-b1b1-b1b1b1b1b1b1",
11631162
permit_no: "C-12345",
11641163
security_received_date: "2019-04-03",
11651164
security_not_required: false,

0 commit comments

Comments
 (0)