/
java56
/
Hotels
Обзор
Документация
Войти
/
java56
/
Hotels
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/java/org/mikhail/service/AddressServiceTest.java
136 строк
5 KB
Mikhail Gorbatenkov
57 - add unit tests to the service
04 фев 2025, 16:43
04 фев 2025, 16:43
d2fb9c0
Код
Авторство
О чём код?
package org.mikhail.service; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mikhail.dto.AddressDTO; import org.mikhail.entity.AddressEntity; import org.mikhail.exceptions.AddressNotFoundException; import org.mikhail.mapper.AddressMapper; import org.mikhail.repository.AddressRepository; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class AddressServiceTest { @Mock private AddressRepository addressRepository; @Mock private AddressMapper addressMapper; private AddressService serviceUnderTest; @BeforeEach void setUp() { serviceUnderTest = new AddressService(addressRepository, addressMapper); } @DisplayName(value = "Должен вернуть идентификатор созданного адреса, когда добавляем отель в БД.") @Test void shouldReturnIdCreatedAddressWhenAddAddress() { // Given AddressDTO addressDTO = new AddressDTO(); addressDTO.setCity("Moscow"); addressDTO.setStreet("Lenina"); addressDTO.setHouse("1"); addressDTO.setPostalCode("123456"); AddressEntity savedEntity = new AddressEntity(); savedEntity.setId(5L); savedEntity.setCity("Moscow"); when(addressMapper.toEntity(addressDTO)).thenReturn(savedEntity); // When Long resultId = serviceUnderTest.addAddress(addressDTO); // Then assertNotNull(resultId); assertEquals(savedEntity.getId(), resultId); verify(addressRepository).persist(any(AddressEntity.class)); } @DisplayName(value = "Должен вернуть сообщение, уведомляющее об успешном удалении, когда удаляем адрес") @Test void shouldReturnSuccessfulMessageWhenDeleteAddress() { // Given Long id = 18L; AddressEntity existingAddress = new AddressEntity(); existingAddress.setId(18L); existingAddress.setCity("Moscow"); String expectedMessage = "Адрес отеля успешно удален"; when(addressRepository.findById(id)).thenReturn(existingAddress); // When String result = serviceUnderTest.deleteAddress(id); // Then assertEquals(expectedMessage, result); assertNotNull(result); verify(addressRepository, times(1)).findById(id); } @DisplayName(value = "Должен сгенеририровать исключение, когда идентификатор адреса не найден во время удаления") @Test void shouldThrownExceptionWhenDeleteAddressNotFound() { Long id = 18L; String expectedMessage = "Адрес отеля не найден."; when(addressRepository.findById(id)).thenReturn(null); // When & Then Throwable exception = assertThrows(AddressNotFoundException.class, () -> serviceUnderTest.deleteAddress(id)); assertEquals(expectedMessage, exception.getMessage()); verify(addressRepository, times(1)).findById(id); verifyNoMoreInteractions(addressRepository); } @DisplayName(value = "Должен вернуть список адресов, когда получаем адреса из базы данных") @Test void shouldReturnListOfAddressWhenGetAddresses() { // Given AddressEntity entity1 = new AddressEntity(); entity1.setId(8L); AddressEntity entity2 = new AddressEntity(); entity2.setId(15L); List<AddressEntity> addressEntities = List.of(entity1, entity2); when(addressRepository.listAll()).thenReturn(addressEntities); when(addressMapper.toDto(any(AddressEntity.class))).thenReturn(new AddressDTO()); // When List<AddressDTO> result = serviceUnderTest.getAllAddresses(); // Then assertNotNull(result); assertEquals(addressEntities.size(), result.size()); verify(addressRepository, times(1)).listAll(); verify(addressMapper, times(2)).toDto(any(AddressEntity.class)); } @DisplayName(value = "Должен вернуть пустой список, когда при поиске адресов, адреса отсутствуют") @Test void shouldReturnEmptyListWhenGetAddressesListIsEmpty() { // Given when(addressRepository.listAll()).thenReturn(Collections.emptyList()); // When List<AddressDTO> result = serviceUnderTest.getAllAddresses(); assertNotNull(result); assertEquals(0, result.size()); verify(addressRepository, times(1)).listAll(); verifyNoMoreInteractions(addressRepository); } }