Skip to content
This repository was archived by the owner on Feb 10, 2025. It is now read-only.

Commit 6a43bf0

Browse files
authored
Merge pull request #293 from City-of-Helsinki/TILA-1386
TILA-1486 Sort application events after save so that they are in creation order
2 parents 264a67c + 3f24a48 commit 6a43bf0

2 files changed

Lines changed: 40 additions & 1 deletion

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { Application, ApplicationEvent, EditorState } from "../types";
2+
import reducer from "./applicationReducer";
3+
4+
jest.mock("next/config", () => () => ({
5+
serverRuntimeConfig: {},
6+
publicRuntimeConfig: {},
7+
}));
8+
9+
describe("applicationReducer", () => {
10+
test("same maintains applicationEventOrder", () => {
11+
const newState = reducer(
12+
{
13+
application: {
14+
applicationEvents: [] as ApplicationEvent[],
15+
} as Application,
16+
} as EditorState,
17+
{
18+
type: "save",
19+
application: {
20+
applicationEvents: [
21+
{ id: 9 } as ApplicationEvent,
22+
{ id: 2 } as ApplicationEvent,
23+
{ id: 5 } as ApplicationEvent,
24+
],
25+
} as Application,
26+
}
27+
);
28+
29+
expect(newState.application.applicationEvents.length).toBe(3);
30+
31+
expect(newState.application.applicationEvents[0].id).toBe(2);
32+
expect(newState.application.applicationEvents[1].id).toBe(5);
33+
expect(newState.application.applicationEvents[2].id).toBe(9);
34+
});
35+
});

ui/modules/application/applicationReducer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
ApplicationEvent,
88
EditorState,
99
} from "../types";
10+
import { deepCopy } from "../util";
1011

1112
const applicationEvent = (
1213
applicationId?: number,
@@ -94,9 +95,12 @@ const reducer = (state: EditorState, action: Action): EditorState => {
9495
return nextState;
9596
}
9697
case "save": {
98+
const editedApplication = deepCopy(action.application);
99+
editedApplication.applicationEvents.sort((ae1, ae2) => ae1.id - ae2.id);
100+
97101
const nextState = {
98102
...state,
99-
application: { ...action.application } as Application,
103+
application: editedApplication,
100104
savedEventId: action.savedEventId,
101105
accordionStates:
102106
action.application?.applicationEvents.map((ae) => ({

0 commit comments

Comments
 (0)