Passed
Push — dev ( 0a2a1f...ba2f8a )
by
unknown
04:44
created

resources/assets/js/components/AssessmentPlan/RatingGuideClipboard.test.ts   A

Complexity

Total Complexity 2
Complexity/F 0

Size

Lines of Code 258
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 194
dl 0
loc 258
rs 10
c 0
b 0
f 0
wmc 2
mnd 2
bc 2
fnc 0
bpm 0
cpm 0
noi 0
1
/* eslint-disable @typescript-eslint/camelcase */
2
/* eslint-disable no-undef */
3
import { MessageDescriptor } from "react-intl";
4
import {
5
  Criteria,
6
  Assessment,
7
  RatingGuideQuestion,
8
  RatingGuideAnswer,
9
  Skill,
10
} from "../../models/types";
11
import { fakeCriterion } from "../../fakeData/fakeJob";
12
import { fakeAnswers } from "../../fakeData/fakeRatingGuideAnswer";
13
import { fakeQuestions } from "../../fakeData/fakeRatingGuideQuestion";
14
import { fakeSkill } from "../../fakeData/fakeSkills";
15
import { AssessmentTypeId } from "../../models/lookupConstants";
16
import {
17
  assessmentType,
18
  skillLevelName,
19
  criteriaType,
20
} from "../../models/localizedConstants";
21
import { clipboardData, ClipboardTableRowProps } from "./RatingGuideClipboard";
22
import { localizeFieldNonNull } from "../../helpers/localize";
23
24
const jediSkill: Skill = fakeSkill();
25
26
jest.mock("../../store/Skill/skillSelector", (): object => {
27
  return {
28
    // Define Function Mock Return Values
29
    getSkillById: jest.fn((): object => jediSkill),
30
  };
31
});
32
33
const formatMessage = (message: MessageDescriptor): string =>
34
  message.defaultMessage ?? "";
35
36
const someSkills: Skill[] = [
37
  fakeSkill(),
38
  fakeSkill(),
39
  fakeSkill(),
40
  fakeSkill(),
41
];
42
43
const someCriteria: Criteria[] = [1, 2, 3, 4].map(
44
  (id: number): Criteria => fakeCriterion(id),
45
);
46
47
const someAssessments: Assessment[] = [
48
  {
49
    id: 1,
50
    criterion_id: 1,
51
    assessment_type_id: AssessmentTypeId.NarrativeAssessment,
52
  },
53
  {
54
    id: 2,
55
    criterion_id: 2,
56
    assessment_type_id: AssessmentTypeId.ApplicationScreeningQuestion,
57
  },
58
  {
59
    id: 3,
60
    criterion_id: 3,
61
    assessment_type_id: AssessmentTypeId.GroupTest,
62
  },
63
  {
64
    id: 4,
65
    criterion_id: 4,
66
    assessment_type_id: AssessmentTypeId.GroupTest,
67
  },
68
];
69
70
const someRatingGuideQuestions: RatingGuideQuestion[] = fakeQuestions();
71
72
const someRatingGuideAnswers: RatingGuideAnswer[] = fakeAnswers();
73
74
const defaultClipboardData = clipboardData(
75
  someAssessments,
76
  someCriteria,
77
  someSkills,
78
  someRatingGuideQuestions,
79
  someRatingGuideAnswers,
80
  "en",
81
  formatMessage,
82
);
83
84
const expectedOutput: ClipboardTableRowProps[] = [
85
  {
86
    id: `A${someRatingGuideQuestions[1].assessment_type_id}-Q${someRatingGuideQuestions[1].id}-T${someCriteria[1].criteria_type_id}-AN${someRatingGuideAnswers[1].id}`,
87
    title: formatMessage(assessmentType(someAssessments[1].assessment_type_id)),
88
    question: someRatingGuideQuestions[1].question,
89
    skillLevel: formatMessage(
90
      skillLevelName(
91
        someCriteria[1].skill_level_id,
92
        someSkills[1].skill_type_id,
93
      ),
94
    ),
95
    criteriaTypeName: formatMessage(
96
      criteriaType(someCriteria[1].criteria_type_id),
97
    ),
98
    skillName: localizeFieldNonNull("en", someSkills[1], "name"),
99
    skillDescription: localizeFieldNonNull("en", someSkills[1], "description"),
100
    modelAnswer: someRatingGuideAnswers[1].expected_answer,
101
  },
102
  {
103
    id: `A${someRatingGuideQuestions[3].assessment_type_id}-Q${someRatingGuideQuestions[3].id}-T${someCriteria[3].criteria_type_id}-AN${someRatingGuideAnswers[3].id}`,
104
    title: formatMessage(assessmentType(someAssessments[3].assessment_type_id)),
105
    question: someRatingGuideQuestions[3].question,
106
    skillLevel: formatMessage(
107
      skillLevelName(
108
        someCriteria[3].skill_level_id,
109
        someSkills[3].skill_type_id,
110
      ),
111
    ),
112
    criteriaTypeName: formatMessage(
113
      criteriaType(someCriteria[3].criteria_type_id),
114
    ),
115
    skillName: localizeFieldNonNull("en", someSkills[3], "name"),
116
    skillDescription: localizeFieldNonNull("en", someSkills[3], "description"),
117
    modelAnswer: someRatingGuideAnswers[3].expected_answer,
118
  },
119
  {
120
    id: `A${someRatingGuideQuestions[2].assessment_type_id}-Q${someRatingGuideQuestions[2].id}-T${someCriteria[2].criteria_type_id}-AN${someRatingGuideAnswers[2].id}`,
121
    title: formatMessage(assessmentType(someAssessments[2].assessment_type_id)),
122
    question: someRatingGuideQuestions[2].question,
123
    skillLevel: formatMessage(
124
      skillLevelName(
125
        someCriteria[2].skill_level_id,
126
        someSkills[2].skill_type_id,
127
      ),
128
    ),
129
    criteriaTypeName: formatMessage(
130
      criteriaType(someCriteria[2].criteria_type_id),
131
    ),
132
    skillName: localizeFieldNonNull("en", someSkills[2], "name"),
133
    skillDescription: localizeFieldNonNull("en", someSkills[2], "description"),
134
    modelAnswer: someRatingGuideAnswers[2].expected_answer,
135
  },
136
  {
137
    id: `A${someRatingGuideQuestions[0].assessment_type_id}-Q${someRatingGuideQuestions[0].id}-T${someCriteria[0].criteria_type_id}-AN${someRatingGuideAnswers[0].id}`,
138
    title: formatMessage(assessmentType(someAssessments[0].assessment_type_id)),
139
    question: someRatingGuideQuestions[0].question,
140
    skillLevel: formatMessage(
141
      skillLevelName(
142
        someCriteria[0].skill_level_id,
143
        someSkills[0].skill_type_id,
144
      ),
145
    ),
146
    criteriaTypeName: formatMessage(
147
      criteriaType(someCriteria[0].criteria_type_id),
148
    ),
149
    skillName: localizeFieldNonNull("en", someSkills[0], "name"),
150
    skillDescription: localizeFieldNonNull("en", someSkills[0], "description"),
151
    modelAnswer: someRatingGuideAnswers[0].expected_answer,
152
  },
153
];
154
describe("ClipboardData", (): void => {
155
  it("returns a truthy object", (): void => {
156
    expect(defaultClipboardData).toBeTruthy();
157
  });
158
  it("returns an array equal to the number of Criteria", (): void => {
159
    expect(defaultClipboardData.length).toEqual(someCriteria.length);
160
  });
161
  it("returns the associated localized skill name for each criteria", (): void => {
162
    expect(defaultClipboardData[0].skillName).toEqual(
163
      expectedOutput[0].skillName,
164
    );
165
    expect(defaultClipboardData[1].skillName).toEqual(
166
      expectedOutput[1].skillName,
167
    );
168
    expect(defaultClipboardData[2].skillName).toEqual(
169
      expectedOutput[2].skillName,
170
    );
171
    expect(defaultClipboardData[3].skillName).toEqual(
172
      expectedOutput[3].skillName,
173
    );
174
  });
175
  it("returns the associated localized skill description for each criteria", (): void => {
176
    expect(defaultClipboardData[0].skillDescription).toEqual(
177
      expectedOutput[0].skillDescription,
178
    );
179
    expect(defaultClipboardData[1].skillDescription).toEqual(
180
      expectedOutput[1].skillDescription,
181
    );
182
    expect(defaultClipboardData[2].skillDescription).toEqual(
183
      expectedOutput[2].skillDescription,
184
    );
185
    expect(defaultClipboardData[3].skillDescription).toEqual(
186
      expectedOutput[3].skillDescription,
187
    );
188
  });
189
  it("returns the associated answer description for each criteria", (): void => {
190
    expect(defaultClipboardData[0].modelAnswer).toEqual(
191
      expectedOutput[0].modelAnswer,
192
    );
193
    expect(defaultClipboardData[1].modelAnswer).toEqual(
194
      expectedOutput[1].modelAnswer,
195
    );
196
    expect(defaultClipboardData[2].modelAnswer).toEqual(
197
      expectedOutput[2].modelAnswer,
198
    );
199
    expect(defaultClipboardData[3].modelAnswer).toEqual(
200
      expectedOutput[3].modelAnswer,
201
    );
202
  });
203
  it("returns the associated question description for each criteria", (): void => {
204
    expect(defaultClipboardData[0].question).toEqual(
205
      expectedOutput[0].question,
206
    );
207
    expect(defaultClipboardData[1].question).toEqual(
208
      expectedOutput[1].question,
209
    );
210
    expect(defaultClipboardData[2].question).toEqual(
211
      expectedOutput[2].question,
212
    );
213
    expect(defaultClipboardData[3].question).toEqual(
214
      expectedOutput[3].question,
215
    );
216
  });
217
  it("returns the proper skill level name as the target skill level", (): void => {
218
    expect(defaultClipboardData[0].skillLevel).toEqual(
219
      expectedOutput[0].skillLevel,
220
    );
221
    expect(defaultClipboardData[1].skillLevel).toEqual(
222
      expectedOutput[1].skillLevel,
223
    );
224
    expect(defaultClipboardData[2].skillLevel).toEqual(
225
      expectedOutput[2].skillLevel,
226
    );
227
    expect(defaultClipboardData[3].skillLevel).toEqual(
228
      expectedOutput[3].skillLevel,
229
    );
230
  });
231
  it("returns the proper criteria type", (): void => {
232
    expect(defaultClipboardData[0].criteriaTypeName).toEqual(
233
      expectedOutput[0].criteriaTypeName,
234
    );
235
    expect(defaultClipboardData[1].criteriaTypeName).toEqual(
236
      expectedOutput[1].criteriaTypeName,
237
    );
238
    expect(defaultClipboardData[2].criteriaTypeName).toEqual(
239
      expectedOutput[2].criteriaTypeName,
240
    );
241
    expect(defaultClipboardData[3].criteriaTypeName).toEqual(
242
      expectedOutput[3].criteriaTypeName,
243
    );
244
  });
245
  it("returns the proper assessment type", (): void => {
246
    expect(defaultClipboardData[0].title).toEqual(expectedOutput[0].title);
247
    expect(defaultClipboardData[1].title).toEqual(expectedOutput[1].title);
248
    expect(defaultClipboardData[2].title).toEqual(expectedOutput[2].title);
249
    expect(defaultClipboardData[3].title).toEqual(expectedOutput[3].title);
250
  });
251
  it("returns a unique id", (): void => {
252
    expect(defaultClipboardData[0].id).toEqual(expectedOutput[0].id);
253
    expect(defaultClipboardData[1].id).toEqual(expectedOutput[1].id);
254
    expect(defaultClipboardData[2].id).toEqual(expectedOutput[2].id);
255
    expect(defaultClipboardData[3].id).toEqual(expectedOutput[3].id);
256
  });
257
});
258