Passed
Push — dev ( da9650...57d9e4 )
by
unknown
04:43 queued 12s
created

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

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 261
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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