Passed
Push — dev ( ec1527...1d62d3 )
by
unknown
05:14
created

resources/assets/js/store/Application/applicationReducer.test.ts   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 59
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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