1
|
|
|
import { |
2
|
|
|
initEntities, |
3
|
|
|
entitiesReducer, |
4
|
|
|
EntityState, |
5
|
|
|
} from "./applicationReducer"; |
6
|
|
|
import { fakeApplication } from "../../fakeData/fakeApplications"; |
7
|
|
|
import { |
8
|
|
|
FetchApplicationAction, |
9
|
|
|
FETCH_APPLICATION_SUCCEEDED, |
10
|
|
|
} from "./applicationActions"; |
11
|
|
|
import { fakeJobApplicationAnswers } from "../../fakeData/fakeJob"; |
12
|
|
|
import { deleteProperty, getId, mapToObject } from "../../helpers/queries"; |
13
|
|
|
|
14
|
|
|
describe("applicationReducer tests", (): void => { |
15
|
|
|
describe("EntitiesReducer", (): void => { |
16
|
|
|
it("Splits fetched application into Application and ApplicationReview correctly", (): void => { |
17
|
|
|
const application = fakeApplication({ |
18
|
|
|
id: 100, |
19
|
|
|
}); |
20
|
|
|
const jobApplicationAnswers = fakeJobApplicationAnswers(); |
21
|
|
|
const initialState = initEntities(); |
22
|
|
|
const expectState: EntityState = { |
23
|
|
|
...initEntities(), |
24
|
|
|
applications: { |
25
|
|
|
[application.id]: deleteProperty(application, "application_review"), |
26
|
|
|
}, |
27
|
|
|
applicationReviews: application.application_review |
28
|
|
|
? { |
29
|
|
|
byId: { |
30
|
|
|
[application.application_review.id]: |
31
|
|
|
application.application_review, |
32
|
|
|
}, |
33
|
|
|
idByApplicationId: { |
34
|
|
|
[application.id]: application.application_review.id, |
35
|
|
|
}, |
36
|
|
|
} |
37
|
|
|
: { |
38
|
|
|
byId: {}, |
39
|
|
|
idByApplicationId: {}, |
40
|
|
|
}, |
41
|
|
|
jobApplicationAnswers: { |
42
|
|
|
...mapToObject(jobApplicationAnswers, getId), |
43
|
|
|
}, |
44
|
|
|
}; |
45
|
|
|
const action: FetchApplicationAction = { |
46
|
|
|
type: FETCH_APPLICATION_SUCCEEDED, |
47
|
|
|
payload: { application, jobApplicationAnswers }, |
48
|
|
|
meta: { id: application.id }, |
49
|
|
|
}; |
50
|
|
|
expect(entitiesReducer(initialState, action)).toEqual(expectState); |
51
|
|
|
}); |
52
|
|
|
}); |
53
|
|
|
}); |
54
|
|
|
|