package [Link].
model;
import static [Link];
import static [Link];
import static [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@ExtendWith([Link])
public class ReservationServiceUnitTest {
@Mock
private ReservationsRepository repo;
@Mock
private ReservationsTableRepository reservationTableRepo;
@Mock
private TableRepository tableRepository;
@Mock
private ReservationsTimeRepository reservationTimeRepository;
@Mock
private ReservationTimeUtilsService reservationTimeService;
@InjectMocks
private ReservationsServiceImpl reservationsService;
private Mapeador mapper = [Link]([Link]);
@Test
public void recuperarAllReservations() throws Exception {
List<ReservationsEntity> listaReservas = listaReservas();
when([Link]()).thenReturn(listaReservas);
List<ReservationDTO> reservas = [Link]();
for (int i = 0; i < [Link](); i++) {
[Link]([Link](i), [Link](i));
}
}
@Test
public void recuperarReservaByReservationNumber() {
ReservationsEntity reserva = crearReservaTest();
when([Link]([Link]())).thenReturn(Optio
[Link](reserva));
ReservationFullDTO reservaResponse =
[Link]([Link]());
CommonLibTestUtils.comprobarDatosReservationsFull2Entity(reservaResponse,
reserva);
}
@Test
public void altaReserva() throws Exception {
ReservationTimeEntity mockReservationTime = new ReservationTimeEntity();
[Link]("20:00");
List<TableEntity> mockTableEntity = createListTableEntity();
ReservationsEntity reserva = crearReservaTest();
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
when([Link]([Link]().getTime
())).thenReturn(mockReservationTime);
when([Link]()).thenReturn(36);
when([Link](any(),
any())).thenReturn([Link]());
when([Link](any())).thenReturn(false);
when([Link]()).thenReturn(mockTableEntity);
when([Link](any())).thenReturn(mockTableEntity);
when([Link](any([Link]))).thenAnswer(invocation ->
[Link](0));
when([Link](any([Link]))).thenAnswer(invoc
ation -> [Link](0));
ReservationFullDTO reservaGuardada =
[Link](nuevaReserva);
CommonLibTestUtils.comprobarDatosReservationsFull2Entity(reservaGuardada,
reserva);
}
private List<TableEntity> createListTableEntity() {
List<TableEntity> tables = new ArrayList<>();
int[] capacities = {4, 4, 4, 6, 6, 8, 8};
for (int capacity : capacities) {
TableEntity table = new TableEntity();
[Link](capacity);
[Link](table);
}
return tables;
}
@Test
public void altaReserva_ThrowsExceptionEmailNull() {
ReservationsEntity reserva = [Link](23, null,
"Raul", "123", "lactosa", "info", 4,
"2024-08-03", "20:00", "ABCD1234EFGH5678IJKL");
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
Exception exception = [Link]([Link], () -> {
[Link](nuevaReserva);
});
String expectedMessage = ConstantsUtils.EMAIL_CANNOT_BE_NULL;
String actualMessage = [Link]();
[Link]([Link](expectedMessage));
}
@Test
public void altaReserva_ThrowsExceptionNumberClientsNull() {
ReservationsEntity reserva = [Link](23,
"email1", "Raul", "123", "lactosa", "info",
null, "2024-08-03", "20:00", "ABCD1234EFGH5678IJKL");
ReservationTimeEntity mockReservationTime =
mock([Link]);
when([Link]()).thenReturn("20:00");
[Link](mockReservationTime);
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
Exception exception = [Link]([Link], () -> {
[Link](nuevaReserva);
});
String expectedMessage = ConstantsUtils.NUMBER_CLIENTS_CANNOT_BE_NULL;
String actualMessage = [Link]();
[Link]([Link](expectedMessage));
}
@Test
public void altaReserva_ThrowsExceptionPhoneNumberNull() {
ReservationsEntity reserva = createEntityAndSetTime(23, "email1", "Raul",
null, "lactosa", "info", 4,
"2024-08-03", "20:00", "ABCD1234EFGH5678IJKL");
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
Exception exception = [Link]([Link], () -> {
[Link](nuevaReserva);
});
String expectedMessage = ConstantsUtils.PHONE_NUMBER_CANNOT_BE_NULL;
String actualMessage = [Link]();
[Link]([Link](expectedMessage));
}
@Test
public void altaReserva_ThrowsExceptionReservationDateNull() {
ReservationsEntity reserva = createEntityAndSetTime(23, "email1", "Raul",
"123", "lactosa", "info", 4, null,
"20:00", "ABCD1234EFGH5678IJKL");
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
Exception exception = [Link]([Link], () -> {
[Link](nuevaReserva);
});
String expectedMessage = ConstantsUtils.RESERVATION_DATE_CANNOT_BE_NULL;
String actualMessage = [Link]();
[Link]([Link](expectedMessage));
}
@Test
public void altaReserva_ThrowsExceptionReservationTimeNull() {
ReservationsEntity reserva = createEntityAndSetTime(23, "email1", "Raul",
"123", "lactosa", "info", 4,
"2024-08-03", null, "ABCD1234EFGH5678IJKL");
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
Exception exception = [Link]([Link], () -> {
[Link](nuevaReserva);
});
String expectedMessage = ConstantsUtils.RESERVATION_TIME_CANNOT_BE_NULL;
String actualMessage = [Link]();
[Link]([Link](expectedMessage));
}
@Test
public void altaReserva_ThrowsExceptionReservationTimeNotValid() {
ReservationsEntity reserva = createEntityAndSetTime(23, "email1", "Raul",
"123", "lactosa", "info", 4,
"2024-08-03", "17:28", "ABCD1234EFGH5678IJKL");
ReservationDTO nuevaReserva =
mapper.reservationEntity2ReservationDTO(reserva);
when([Link]([Link]().getTime
())).thenThrow(new
IllegalArgumentException(ConstantsUtils.INVALID_RESERVATION_TIME));
Exception exception =
[Link]([Link], () -> {
[Link](nuevaReserva);
});
String expectedMessage = ConstantsUtils.INVALID_RESERVATION_TIME;
String actualMessage = [Link]();
[Link]([Link](expectedMessage));
}
private ReservationsEntity createEntityAndSetTime(Integer idReservation, String
email, String name,
String phoneNumber, String
intolerances, String reservationInfo, Integer numberClients,
String reservationDate,
String reservationTime, String reservationNumber) {
ReservationsEntity reserva =
[Link](idReservation, email, name, phoneNumber,
intolerances, reservationInfo, numberClients, reservationDate,
reservationTime, reservationNumber);
ReservationTimeEntity mockReservationTime =
mock([Link]);
when([Link]()).thenReturn(reservationTime);
[Link](mockReservationTime);
return reserva;
}
private ReservationsEntity crearReservaTest() {
return createEntityAndSetTime(23, "email1", "Raul", "123", "lactosa",
"info", 4, "2024-08-03",
"20:00", "ABCD1234EFGH5678IJKL");
}
private List<ReservationsEntity> listaReservas() {
return [Link](crearReservaTest(),
createEntityAndSetTime(24, "email2", "Raul", "123",
"lactosa", "info", 4, "2024-08-13",
"12:30", "ABCD1234EFGH5699IJKL"),
createEntityAndSetTime(25, "email3", "Alejandro", "7777",
"gluten", "info", 5, "2024-08-05",
"14:00", "YZAB1234CDEF5678GHIJ"));
}
}