22
33import com .objectcomputing .checkins .exceptions .BadArgException ;
44import com .objectcomputing .checkins .services .TestContainersSuite ;
5+ import com .objectcomputing .checkins .services .fixture .SkillFixture ;
6+ import com .objectcomputing .checkins .services .fixture .MemberProfileFixture ;
7+ import com .objectcomputing .checkins .services .fixture .MemberSkillFixture ;
8+ import com .objectcomputing .checkins .services .skills .Skill ;
9+ import com .objectcomputing .checkins .services .member_skill .skillsreport .SkillLevel ;
510import com .objectcomputing .checkins .services .member_skill .MemberSkill ;
611import com .objectcomputing .checkins .services .member_skill .MemberSkillRepository ;
712import com .objectcomputing .checkins .services .memberprofile .MemberProfile ;
1318import org .junit .jupiter .api .BeforeEach ;
1419import org .junit .jupiter .api .Test ;
1520import org .junit .jupiter .api .condition .DisabledInNativeImage ;
16- import org .mockito .InjectMocks ;
17- import org .mockito .Mock ;
18- import org .mockito .MockitoAnnotations ;
21+ import jakarta .inject .Inject ;
1922
2023import java .time .LocalDate ;
2124import java .util .ArrayList ;
2932import static org .junit .jupiter .api .Assertions .assertNull ;
3033import static org .junit .jupiter .api .Assertions .assertThrows ;
3134import static org .junit .jupiter .api .Assertions .assertTrue ;
32- import static org .mockito .Mockito .any ;
33- import static org .mockito .Mockito .never ;
34- import static org .mockito .Mockito .reset ;
35- import static org .mockito .Mockito .times ;
36- import static org .mockito .Mockito .verify ;
37- import static org .mockito .Mockito .when ;
3835
39- // Disabled in nativeTest, as we get an exception from Mockito
40- // => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins
41- @ DisabledInNativeImage
42- class SkillsReportServicesImplTest extends TestContainersSuite {
43-
44- @ Mock
45- private MemberSkillRepository memberSkillRepository ;
46-
47- @ Mock
48- private MemberProfileRepository memberProfileRepository ;
49-
50- @ Mock
51- private MemberProfileServices memberProfileServices ;
52-
53- @ Mock
54- private SkillRepository skillRepository ;
55-
56- @ InjectMocks
36+ class SkillsReportServicesImplTest extends TestContainersSuite
37+ implements MemberProfileFixture , MemberSkillFixture , SkillFixture {
38+ @ Inject
5739 private SkillsReportServicesImpl skillsReportServices ;
5840
59- private AutoCloseable mockFinalizer ;
60-
61- @ BeforeAll
62- void initMocks () {
63- mockFinalizer = MockitoAnnotations .openMocks (this );
64- }
65-
66- @ BeforeEach
67- void resetMocks () {
68- reset (memberSkillRepository , memberProfileRepository , skillRepository );
69- }
70-
71- @ AfterAll
72- void finalizeMocks () throws Exception {
73- mockFinalizer .close ();
74- }
75-
7641 @ Test
7742 void testReportSkillNotExist () {
7843 final SkillLevelDTO dto = new SkillLevelDTO ();
@@ -89,13 +54,10 @@ void testReportSkillNotExist() {
8954
9055 @ Test
9156 void testReportMemberProfileNotExist () {
92- final SkillLevelDTO dto = new SkillLevelDTO ();
93- final UUID skillId = UUID .randomUUID ();
94- dto .setId (skillId );
95- when (skillRepository .existsById (skillId )).thenReturn (true );
57+ final Skill skill = createADefaultSkill ();
9658
9759 final List <SkillLevelDTO > skills = new ArrayList <>();
98- skills .add (dto );
60+ skills .add (new SkillLevelDTO ( skill . getId (), SkillLevel . NOVICE ) );
9961
10062 final SkillsReportRequestDTO request = new SkillsReportRequestDTO ();
10163 request .setSkills (skills );
@@ -111,72 +73,39 @@ void testReportEmptyRequestedSkillsList() {
11173 request .setSkills (new ArrayList <>());
11274 final SkillsReportResponseDTO response = skillsReportServices .report (request );
11375 assertNotNull (response );
114-
115- verify (memberSkillRepository , never ()).findBySkillid (any (UUID .class ));
116- verify (memberProfileServices , never ()).getById (any (UUID .class ));
76+ assertEquals (0 , response .getTeamMembers ().size ());
11777 }
11878
11979 @ Test
12080 void testReport () {
121- final UUID skillId1 = UUID .randomUUID ();
122- final UUID skillId2 = UUID .randomUUID ();
123- final UUID skillId3 = UUID .randomUUID ();
124- final UUID skillId4 = UUID .randomUUID ();
125- final UUID memberId1 = UUID .randomUUID ();
126- final UUID memberId2 = UUID .randomUUID ();
127- final UUID memberId3 = UUID .randomUUID ();
128- final UUID memberId4 = UUID .randomUUID ();
129-
130- final MemberSkill ms1 = new MemberSkill (memberId1 , skillId1 , SkillLevel .INTERMEDIATE_LEVEL , LocalDate .now ());
131- final MemberSkill ms2 = new MemberSkill (memberId1 , skillId2 , SkillLevel .ADVANCED_LEVEL , LocalDate .now ());
132- final MemberSkill ms3 = new MemberSkill (memberId2 , skillId3 , SkillLevel .NOVICE_LEVEL , LocalDate .now ());
133- final MemberSkill ms4 = new MemberSkill (memberId2 , skillId4 , SkillLevel .EXPERT_LEVEL , LocalDate .now ());
134- final MemberSkill ms5 = new MemberSkill (memberId3 , skillId2 , SkillLevel .INTERESTED_LEVEL , LocalDate .now ());
135- final MemberSkill ms6 = new MemberSkill (memberId3 , skillId3 , SkillLevel .ADVANCED_LEVEL , LocalDate .now ());
136- final MemberSkill ms7 = new MemberSkill (memberId4 , skillId1 , SkillLevel .ADVANCED_LEVEL , LocalDate .now ());
137- final MemberSkill ms8 = new MemberSkill (memberId4 , skillId2 , SkillLevel .INTERMEDIATE_LEVEL , LocalDate .now ());
138- final MemberSkill ms9 = new MemberSkill (memberId4 , skillId4 , SkillLevel .EXPERT_LEVEL , LocalDate .now ());
139-
140- final List <MemberSkill > skillList1 = new ArrayList <>();
141- skillList1 .add (ms1 );
142- skillList1 .add (ms7 );
143- final List <MemberSkill > skillList2 = new ArrayList <>();
144- skillList2 .add (ms2 );
145- skillList2 .add (ms5 );
146- skillList2 .add (ms8 );
147- final List <MemberSkill > skillList3 = new ArrayList <>();
148- skillList3 .add (ms3 );
149- skillList3 .add (ms6 );
150- final List <MemberSkill > skillList4 = new ArrayList <>();
151- skillList4 .add (ms4 );
152- skillList4 .add (ms9 );
153-
154- when (memberSkillRepository .findBySkillid (skillId1 )).thenReturn (skillList1 );
155- when (memberSkillRepository .findBySkillid (skillId2 )).thenReturn (skillList2 );
156- when (memberSkillRepository .findBySkillid (skillId3 )).thenReturn (skillList3 );
157- when (memberSkillRepository .findBySkillid (skillId4 )).thenReturn (skillList4 );
158- MemberProfile joey = new MemberProfile ("Joey" , null , "Tribbiani" , null ,
159- null , null , null , null , null , null , null ,
160- null , null , null , null , null , null );
161- MemberProfile chandler = new MemberProfile ("Chandler" , null , "Bing" , null ,
162- null , null , null , null , null , null , null ,
163- null , null ,null , null , null , null );
164- MemberProfile ross = new MemberProfile ("Ross" , null , "Geller" , null ,
165- null , null , null , null , null , null , null ,
166- null , null ,null , null , null , null );
167- when (memberProfileServices .getById (memberId1 )).thenReturn (joey );
168- when (memberProfileServices .getById (memberId2 )).thenReturn (chandler );
169- when (memberProfileServices .getById (memberId3 )).thenReturn (null );
170- when (memberProfileServices .getById (memberId4 )).thenReturn (ross );
171-
172- when (skillRepository .existsById (skillId1 )).thenReturn (true );
173- when (skillRepository .existsById (skillId2 )).thenReturn (true );
174- when (skillRepository .existsById (skillId3 )).thenReturn (true );
175- when (skillRepository .existsById (skillId4 )).thenReturn (true );
176- when (memberProfileRepository .existsById (memberId1 )).thenReturn (true );
177- when (memberProfileRepository .existsById (memberId2 )).thenReturn (true );
178- when (memberProfileRepository .existsById (memberId3 )).thenReturn (true );
179- when (memberProfileRepository .existsById (memberId4 )).thenReturn (true );
81+ Skill skill1 = createSkill ("Skill1" , false , "First" , false );
82+ Skill skill2 = createSkill ("Skill2" , false , "Second" , false );
83+ Skill skill3 = createSkill ("Skill3" , false , "Third" , false );
84+ Skill skill4 = createSkill ("Skill4" , false , "Fourth" , false );
85+
86+ MemberProfile member1 = createADefaultMemberProfile ();
87+ MemberProfile member2 = createASecondDefaultMemberProfile ();
88+ MemberProfile member3 = createAThirdDefaultMemberProfile ();
89+ MemberProfile member4 = createADefaultMemberProfileForPdl (member1 );
90+
91+ final UUID skillId1 = skill1 .getId ();
92+ final UUID skillId2 = skill2 .getId ();
93+ final UUID skillId3 = skill3 .getId ();
94+ final UUID skillId4 = skill4 .getId ();
95+ final UUID memberId1 = member1 .getId ();
96+ final UUID memberId2 = member2 .getId ();
97+ final UUID memberId3 = member3 .getId ();
98+ final UUID memberId4 = member4 .getId ();
99+
100+ final MemberSkill ms1 = createMemberSkill (member1 , skill1 , SkillLevel .INTERMEDIATE_LEVEL , LocalDate .now ());
101+ final MemberSkill ms2 = createMemberSkill (member1 , skill2 , SkillLevel .ADVANCED_LEVEL , LocalDate .now ());
102+ final MemberSkill ms3 = createMemberSkill (member2 , skill3 , SkillLevel .NOVICE_LEVEL , LocalDate .now ());
103+ final MemberSkill ms4 = createMemberSkill (member2 , skill4 , SkillLevel .EXPERT_LEVEL , LocalDate .now ());
104+ final MemberSkill ms5 = createMemberSkill (member3 , skill2 , SkillLevel .INTERESTED_LEVEL , LocalDate .now ());
105+ final MemberSkill ms6 = createMemberSkill (member3 , skill3 , SkillLevel .ADVANCED_LEVEL , LocalDate .now ());
106+ final MemberSkill ms7 = createMemberSkill (member4 , skill1 , SkillLevel .ADVANCED_LEVEL , LocalDate .now ());
107+ final MemberSkill ms8 = createMemberSkill (member4 , skill2 , SkillLevel .INTERMEDIATE_LEVEL , LocalDate .now ());
108+ final MemberSkill ms9 = createMemberSkill (member4 , skill4 , SkillLevel .EXPERT_LEVEL , LocalDate .now ());
180109
181110 // List of skills required in first request
182111 final SkillLevelDTO dto1 = new SkillLevelDTO ();
@@ -203,17 +132,13 @@ void testReport() {
203132 assertTrue (elem .getId ().equals (memberId1 ) ||
204133 elem .getId ().equals (memberId3 ) || elem .getId ().equals (memberId4 ));
205134 if (elem .getId ().equals (memberId1 )) {
206- assertReturnedMember1 (elem , skillId1 , skillId2 );
135+ assertReturnedMember1 (elem , skillId1 , skillId2 , member1 . getFirstName () + " " + member1 . getLastName () );
207136 } else if (elem .getId ().equals (memberId3 )) {
208- assertReturnedMember3 (elem , skillId2 , skillId3 );
137+ assertReturnedMember3 (elem , skillId2 , skillId3 , member3 . getFirstName () + " " + member3 . getLastName () );
209138 } else {
210- assertReturnedMember4 (elem , skillId1 , skillId2 );
139+ assertReturnedMember4 (elem , skillId1 , skillId2 , member4 . getFirstName () + " " + member4 . getLastName () );
211140 }
212141 }
213- verify (memberSkillRepository , times (3 )).findBySkillid (any (UUID .class ));
214- verify (memberProfileServices , times (3 )).getById (any (UUID .class ));
215- verify (skillRepository , times (3 )).existsById (any (UUID .class ));
216- verify (memberProfileRepository , never ()).existsById (any (UUID .class ));
217142
218143 // Specify a list of members
219144 final Set <UUID > members = new HashSet <>();
@@ -227,24 +152,16 @@ void testReport() {
227152 for (TeamMemberSkillDTO elem : response2 .getTeamMembers ()) {
228153 assertTrue (elem .getId ().equals (memberId3 ) || elem .getId ().equals (memberId4 ));
229154 if (elem .getId ().equals (memberId3 )) {
230- assertReturnedMember3 (elem , skillId2 , skillId3 );
155+ assertReturnedMember3 (elem , skillId2 , skillId3 , member3 . getFirstName () + " " + member3 . getLastName () );
231156 } else {
232- assertReturnedMember4 (elem , skillId1 , skillId2 );
157+ assertReturnedMember4 (elem , skillId1 , skillId2 , member4 . getFirstName () + " " + member4 . getLastName () );
233158 }
234159 }
235- verify (memberSkillRepository , times (6 )).findBySkillid (any (UUID .class ));
236- verify (memberProfileServices , times (6 )).getById (any (UUID .class ));
237- verify (skillRepository , times (6 )).existsById (any (UUID .class ));
238- verify (memberProfileRepository , times (3 )).existsById (any (UUID .class ));
239160
240161 // Each returned member must satisfy all requested skills
241162 request1 .setInclusive (true );
242163 final SkillsReportResponseDTO response3 = skillsReportServices .report (request1 );
243164 assertTrue (response3 .getTeamMembers ().isEmpty ());
244- verify (memberSkillRepository , times (9 )).findBySkillid (any (UUID .class ));
245- verify (memberProfileServices , times (9 )).getById (any (UUID .class ));
246- verify (skillRepository , times (9 )).existsById (any (UUID .class ));
247- verify (memberProfileRepository , times (6 )).existsById (any (UUID .class ));
248165
249166 // Another request
250167 final SkillLevelDTO dto4 = new SkillLevelDTO ();
@@ -265,7 +182,7 @@ void testReport() {
265182
266183 assertEquals (1 , response4 .getTeamMembers ().size ());
267184 assertEquals (memberId4 , response4 .getTeamMembers ().get (0 ).getId ());
268- assertEquals ("Ross Geller" , response4 .getTeamMembers ().get (0 ).getName ());
185+ assertEquals (member4 . getFirstName () + " " + member4 . getLastName () , response4 .getTeamMembers ().get (0 ).getName ());
269186 assertEquals (2 , response4 .getTeamMembers ().get (0 ).getSkills ().size ());
270187 for (SkillLevelDTO skill : response4 .getTeamMembers ().get (0 ).getSkills ()) {
271188 assertTrue (skill .getId ().equals (skillId2 ) || skill .getId ().equals (skillId4 ));
@@ -275,14 +192,10 @@ void testReport() {
275192 assertEquals (SkillLevel .convertFromString (SkillLevel .EXPERT_LEVEL ), skill .getLevel ());
276193 }
277194 }
278- verify (memberSkillRepository , times (11 )).findBySkillid (any (UUID .class ));
279- verify (memberProfileServices , times (12 )).getById (any (UUID .class ));
280- verify (skillRepository , times (11 )).existsById (any (UUID .class ));
281- verify (memberProfileRepository , times (6 )).existsById (any (UUID .class ));
282195 }
283196
284- private void assertReturnedMember1 (TeamMemberSkillDTO elem , UUID skillId1 , UUID skillId2 ) {
285- assertEquals ("Joey Tribbiani" , elem .getName ());
197+ private void assertReturnedMember1 (TeamMemberSkillDTO elem , UUID skillId1 , UUID skillId2 , String fullName ) {
198+ assertEquals (fullName , elem .getName ());
286199 assertEquals (2 , elem .getSkills ().size ());
287200 for (SkillLevelDTO skill : elem .getSkills ()) {
288201 assertTrue (skill .getId ().equals (skillId1 ) || skill .getId ().equals (skillId2 ));
@@ -294,8 +207,8 @@ private void assertReturnedMember1(TeamMemberSkillDTO elem, UUID skillId1, UUID
294207 }
295208 }
296209
297- private void assertReturnedMember3 (TeamMemberSkillDTO elem , UUID skillId2 , UUID skillId3 ) {
298- assertNull ( elem .getName ());
210+ private void assertReturnedMember3 (TeamMemberSkillDTO elem , UUID skillId2 , UUID skillId3 , String fullName ) {
211+ assertEquals ( fullName , elem .getName ());
299212 assertEquals (2 , elem .getSkills ().size ());
300213 for (SkillLevelDTO skill : elem .getSkills ()) {
301214 assertTrue (skill .getId ().equals (skillId2 ) || skill .getId ().equals (skillId3 ));
@@ -307,8 +220,8 @@ private void assertReturnedMember3(TeamMemberSkillDTO elem, UUID skillId2, UUID
307220 }
308221 }
309222
310- private void assertReturnedMember4 (TeamMemberSkillDTO elem , UUID skillId1 , UUID skillId2 ) {
311- assertEquals ("Ross Geller" , elem .getName ());
223+ private void assertReturnedMember4 (TeamMemberSkillDTO elem , UUID skillId1 , UUID skillId2 , String fullName ) {
224+ assertEquals (fullName , elem .getName ());
312225 assertEquals (2 , elem .getSkills ().size ());
313226 for (SkillLevelDTO skill : elem .getSkills ()) {
314227 assertTrue (skill .getId ().equals (skillId1 ) || skill .getId ().equals (skillId2 ));
0 commit comments