4343import static org .mockito .Matchers .anyString ;
4444import static org .mockito .Mockito .any ;
4545import static org .mockito .Mockito .anyListOf ;
46+ import static org .mockito .Mockito .doAnswer ;
4647import static org .mockito .Mockito .doNothing ;
4748import static org .mockito .Mockito .doReturn ;
4849import static org .mockito .Mockito .doThrow ;
@@ -96,10 +97,18 @@ public void shouldSaveRecurringAppointmentsForGivenRecurringPatternAndAppointmen
9697 List <Appointment > appointments = Collections .singletonList (appointment );
9798 appointmentRecurringPattern .setAppointments (new HashSet <>(appointments ));
9899 String notes = "Notes" ;
100+ String generatedNumber = "TEST123" ;
101+
99102 doReturn (notes ).when (appointmentServiceHelper ).getAppointmentAsJsonString (appointment );
100103 doReturn (appointmentAudit ).when (appointmentServiceHelper ).getAppointmentAuditEvent (appointment , notes );
101104 doNothing ().when (appointmentRecurringPatternDao ).save (appointmentRecurringPattern );
102105
106+ // Mock applyAppointmentNumbers to set the appointment number
107+ doAnswer (invocation -> {
108+ List <Appointment > appts = invocation .getArgument (0 );
109+ appts .forEach (a -> a .setAppointmentNumber (generatedNumber ));
110+ return null ;
111+ }).when (appointmentNumberGenerator ).applyAppointmentNumbers (anyListOf (Appointment .class ));
103112
104113 //setting up the number generator locator
105114 recurringAppointmentService .setAppointmentNumberGeneratorLocator (
@@ -112,7 +121,7 @@ public void shouldSaveRecurringAppointmentsForGivenRecurringPatternAndAppointmen
112121 verify (appointmentRecurringPatternDao ).save (appointmentRecurringPattern );
113122 verify (appointmentServiceHelper ).getAppointmentAsJsonString (appointment );
114123 verify (appointmentServiceHelper ).getAppointmentAuditEvent (appointment , notes );
115- verify (appointmentNumberGenerator ).generateAppointmentNumber ( appointment );
124+ verify (appointmentNumberGenerator ).applyAppointmentNumbers ( anyListOf ( Appointment . class ) );
116125 assertEquals (1 , appointmentRecurringPattern .getAppointments ().size ());
117126 assertEquals (1 , appointmentsList .get (0 ).getAppointmentAudits ().size ());
118127 }
@@ -284,18 +293,27 @@ public void shouldSaveAndReturnTheUpdatedRecurringPatternWhenUpdateIsCalled() th
284293 AppointmentAudit appointmentAudit = new AppointmentAudit ();
285294 appointmentRecurringPattern .setAppointments (new HashSet <>(appointments ));
286295 String notes = "Notes" ;
296+ String generatedNumber = "TEST123" ;
297+
287298 doNothing ().when (appointmentRecurringPatternDao ).save (appointmentRecurringPattern );
288299 doReturn (notes ).when (appointmentServiceHelper ).getAppointmentAsJsonString (appointment );
289300 doReturn (appointmentAudit ).when (appointmentServiceHelper ).getAppointmentAuditEvent (appointment , notes );
290301
302+ // Mock applyAppointmentNumbers to set the appointment number
303+ doAnswer (invocation -> {
304+ List <Appointment > appts = invocation .getArgument (0 );
305+ appts .forEach (a -> a .setAppointmentNumber (generatedNumber ));
306+ return null ;
307+ }).when (appointmentNumberGenerator ).applyAppointmentNumbers (anyListOf (Appointment .class ));
308+
291309 recurringAppointmentService .setAppointmentNumberGeneratorLocator (
292310 new AppointmentNumberGeneratorLocatorImpl (appointmentNumberGenerator ));
293311 recurringAppointmentService .update (appointmentRecurringPattern , appointment );
294312
295313 verify (appointmentRecurringPatternDao , times (1 )).save (appointmentRecurringPattern );
296314 verify (appointmentServiceHelper ).getAppointmentAsJsonString (appointment );
297315 verify (appointmentServiceHelper ).getAppointmentAuditEvent (appointment , notes );
298- verify (appointmentNumberGenerator ).generateAppointmentNumber ( appointment );
316+ verify (appointmentNumberGenerator ).applyAppointmentNumbers ( anyListOf ( Appointment . class ) );
299317 }
300318
301319 @ Test
@@ -383,6 +401,19 @@ public void shouldAssignSameAppointmentNumberToAllNewRecurringAppointments() thr
383401
384402 when (appointmentNumberGenerator .generateAppointmentNumber (any (Appointment .class )))
385403 .thenReturn (sharedAppointmentNumber );
404+
405+ // Mock applyAppointmentNumbers to use the mocked generateAppointmentNumber
406+ doAnswer (invocation -> {
407+ List <Appointment > appts = invocation .getArgument (0 );
408+ String number = appointmentNumberGenerator .generateAppointmentNumber (appts .get (0 ));
409+ appts .forEach (a -> {
410+ if (a .getAppointmentNumber () == null ) {
411+ a .setAppointmentNumber (number );
412+ }
413+ });
414+ return null ;
415+ }).when (appointmentNumberGenerator ).applyAppointmentNumbers (anyListOf (Appointment .class ));
416+
386417 doReturn (notes ).when (appointmentServiceHelper ).getAppointmentAsJsonString (any ());
387418 doReturn (appointmentAudit ).when (appointmentServiceHelper ).getAppointmentAuditEvent (any (), anyString ());
388419 doNothing ().when (appointmentRecurringPatternDao ).save (appointmentRecurringPattern );
@@ -395,7 +426,7 @@ public void shouldAssignSameAppointmentNumberToAllNewRecurringAppointments() thr
395426 assertEquals (sharedAppointmentNumber , appointmentOne .getAppointmentNumber ());
396427 assertEquals (sharedAppointmentNumber , appointmentTwo .getAppointmentNumber ());
397428 assertEquals (sharedAppointmentNumber , appointmentThree .getAppointmentNumber ());
398- verify (appointmentNumberGenerator , times (1 )).generateAppointmentNumber ( any ( ));
429+ verify (appointmentNumberGenerator , times (1 )).applyAppointmentNumbers ( anyListOf ( Appointment . class ));
399430 }
400431
401432 @ Test
0 commit comments