From 4770cf2b9ffa1b9fc07644d2a666e71eeaae3dba Mon Sep 17 00:00:00 2001 From: rubn Date: Sat, 7 Dec 2024 12:16:02 +0100 Subject: [PATCH] :construction: #70 test --- .../espflow/service/EsptoolServiceTest.java | 24 +++----- .../EsptoolExecutableServiceImplTest.java | 60 +++++++------------ ...ServiceFindByIsSelectedToTrueProvider.java | 41 +++++++++++++ 3 files changed, 69 insertions(+), 56 deletions(-) create mode 100644 src/test/java/com/esp/espflow/service/respository/impl/provider/esptoolexecutableprovider/EsptoolExecutableServiceFindByIsSelectedToTrueProvider.java diff --git a/src/test/java/com/esp/espflow/service/EsptoolServiceTest.java b/src/test/java/com/esp/espflow/service/EsptoolServiceTest.java index 41f111f..efcc1ba 100644 --- a/src/test/java/com/esp/espflow/service/EsptoolServiceTest.java +++ b/src/test/java/com/esp/espflow/service/EsptoolServiceTest.java @@ -16,9 +16,7 @@ import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.ArrayUtils; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ArgumentsSource; @@ -32,12 +30,10 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Set; -import java.util.stream.Stream; import static com.esp.espflow.util.EspFlowConstants.BAUD_RATE; import static com.esp.espflow.util.EspFlowConstants.ESPTOOL_PY; @@ -46,10 +42,7 @@ import static com.esp.espflow.util.EspFlowConstants.FLASH_ID; import static com.esp.espflow.util.EspFlowConstants.PORT; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -59,7 +52,6 @@ * @author rubn */ @Log4j2 -@TestMethodOrder(MethodOrderer.class) @ExtendWith(MockitoExtension.class) class EsptoolServiceTest { @@ -110,8 +102,6 @@ void readAllDevices(Flux actualLinesFlashId, .expectNext(expectedEspDeviceInfoRecord) .verifyComplete(); - verify(esptoolFallbackService, times(0)).fallback("/dev/ttyUSB1"); - verify(esptoolFallbackService, times(0)).fallbackEmptyPorts(); verifyNoInteractions(esptoolFallbackService); } @@ -132,7 +122,7 @@ void readAllDevicesEmptyPorts() { .expectErrorMatches(error -> error.getMessage().contains("Possibly empty ports")) .verify(); - verify(esptoolFallbackService, times(1)).fallbackEmptyPorts(); + verify(esptoolFallbackService).fallbackEmptyPorts(); verifyNoMoreInteractions(esptoolFallbackService); } @@ -157,7 +147,6 @@ void readFlashIdWithCustomPort(String portForInputStream, .expectNext(expectedLines) .verifyComplete(); - verify(esptoolFallbackService, times(0)).fallback(portForInputStream); verifyNoInteractions(esptoolFallbackService); } @@ -186,7 +175,7 @@ void flashSizeIsNullFromInputWhenMapping(String portForInputStream, .expectNext(expectedLines) .verifyComplete(); - verify(esptoolFallbackService, times(1)).fallback(portForInputStream); + verify(esptoolFallbackService).fallback(portForInputStream); verifyNoMoreInteractions(esptoolFallbackService); } @@ -365,8 +354,9 @@ void testCreateDirectoryWhenNotExists() throws Exception { esptoolService.createEspBackUpFlashDirIfNotExists(); - filesMock.verify(() -> Files.exists(mockedPath), times(1)); - filesMock.verify(() -> Files.createDirectory(mockedPath), times(1)); + filesMock.verify(() -> Files.exists(mockedPath)); + filesMock.verify(() -> Files.createDirectory(mockedPath)); + filesMock.verifyNoMoreInteractions(); } } @@ -379,8 +369,8 @@ void testDirectoryAlreadyExists() throws Exception { esptoolService.createEspBackUpFlashDirIfNotExists(); - filesMock.verify(() -> Files.exists(mockedPath), times(1)); - filesMock.verify(() -> Files.createDirectory(mockedPath), never()); + filesMock.verify(() -> Files.exists(mockedPath)); + filesMock.verifyNoMoreInteractions(); } } diff --git a/src/test/java/com/esp/espflow/service/respository/impl/EsptoolExecutableServiceImplTest.java b/src/test/java/com/esp/espflow/service/respository/impl/EsptoolExecutableServiceImplTest.java index 990a06f..d021c40 100644 --- a/src/test/java/com/esp/espflow/service/respository/impl/EsptoolExecutableServiceImplTest.java +++ b/src/test/java/com/esp/espflow/service/respository/impl/EsptoolExecutableServiceImplTest.java @@ -3,6 +3,7 @@ import com.esp.espflow.entity.EsptoolExecutableEntity; import com.esp.espflow.entity.dto.EsptoolExecutableDto; import com.esp.espflow.service.respository.EsptoolExecutableRepository; +import com.esp.espflow.service.respository.impl.provider.esptoolexecutableprovider.EsptoolExecutableServiceFindByIsSelectedToTrueProvider; import com.esp.espflow.service.respository.impl.provider.esptoolexecutableprovider.EsptoolExecutableServiceSaveProvider; import com.esp.espflow.service.respository.impl.provider.esptoolexecutableprovider.EsptoolExecutableServiceUpdateProvider; import com.esp.espflow.service.respository.impl.provider.esptoolexecutableprovider.EsptoollExecutableServiceFindAllProvider; @@ -21,7 +22,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -54,7 +54,7 @@ void save(EsptoolExecutableDto dtoToSave, EsptoolExecutableEntity entityToSave) .usingRecursiveComparison() .isEqualTo(captor.getValue()); - verify(esptoolExecutableRepository, times(1)).save(captor.getValue()); + verify(esptoolExecutableRepository).save(captor.getValue()); } @@ -74,14 +74,12 @@ void update(EsptoolExecutableEntity toSave, EsptoolExecutableDto dtoToSave, Espt .usingRecursiveComparison() .isEqualTo(captor.getValue()); - assertAll(() -> { - assertThat(esptoolExecutableService.findByEsptoolVersionWithBundle("v4.7.0", false)) - .map(EsptoolExecutableDto::isSelected) - .hasValue(true); - }); + assertThat(esptoolExecutableService.findByEsptoolVersionWithBundle("v4.7.0", false)) + .map(EsptoolExecutableDto::isSelected) + .hasValue(true); verify(esptoolExecutableRepository, times(2)).findByEsptoolVersionWithBundle("v4.7.0", false); - verify(esptoolExecutableRepository, times(1)).save(captor.getValue()); + verify(esptoolExecutableRepository).save(captor.getValue()); } @@ -118,7 +116,7 @@ void findByEsptoolVersionWithBundle() { .usingRecursiveComparison() .isEqualTo(expectedEsptoolExecutableDto); - verify(esptoolExecutableRepository, times(1)).findByEsptoolVersionWithBundle("v4.7.0", false); + verify(esptoolExecutableRepository).findByEsptoolVersionWithBundle("v4.7.0", false); verifyNoMoreInteractions(esptoolExecutableRepository); } @@ -127,45 +125,29 @@ void findByEsptoolVersionWithBundle() { @DisplayName("update all items except this id") void updateAllSelectedToFalseExcept() { - assertThatCode(() -> esptoolExecutableService.updateAllSelectedToFalseExcept(1L)) - .doesNotThrowAnyException(); + assertThatCode(() -> esptoolExecutableService.updateAllSelectedToFalseExcept(1L)).doesNotThrowAnyException(); - verify(esptoolExecutableRepository, times(1)).updateAllSelectedToFalseExcept(1L); + verify(esptoolExecutableRepository).updateAllSelectedToFalseExcept(1L); verifyNoMoreInteractions(esptoolExecutableRepository); } - @Test + @ParameterizedTest + @ArgumentsSource(EsptoolExecutableServiceFindByIsSelectedToTrueProvider.class) @DisplayName("Only is set to true") - void findByIsSelectedToTrue() { - final EsptoolExecutableEntity esptoolExecutableEntityToSave = EsptoolExecutableEntity - .builder() - .id(1L) - .name("esptool") - .absolutePathEsptool("/tmp/esptool-dir/esptool.py") - .esptoolVersion("v4.7.0") - .isBundled(false) - .isSelected(true) - .sha256("ae1a3fe6eed5bf7e5dbaee78aea868c5e62f80dd43e13a2f69016da86387a194") - .build(); + void findByIsSelectedToTrue(EsptoolExecutableEntity entitySaved, EsptoolExecutableDto expectedEsptoolExecutableDto) { - when(esptoolExecutableRepository.findByIsSelectedToTrue()) - .thenReturn(Optional.of(esptoolExecutableEntityToSave)); - - final Optional expectedEsptoolExecutableDto = Optional.of(EsptoolExecutableDto - .builder() - .id(1L) - .name("esptool") - .absolutePathEsptool("/tmp/esptool-dir/esptool.py") - .esptoolVersion("v4.7.0") - .isBundled(false) - .isSelected(true) - .sha256("ae1a3fe6eed5bf7e5dbaee78aea868c5e62f80dd43e13a2f69016da86387a194") - .build()); + when(esptoolExecutableRepository.findByIsSelectedToTrue()).thenReturn(Optional.of(entitySaved)); assertThat(this.esptoolExecutableService.findByIsSelectedToTrue()) .usingRecursiveComparison() - .isEqualTo(expectedEsptoolExecutableDto); + .isEqualTo(Optional.of(expectedEsptoolExecutableDto)); + + assertThat(this.esptoolExecutableService.findByIsSelectedToTrue()) + .map(EsptoolExecutableDto::isSelected) + .hasValue(true); + + } @Test @@ -204,7 +186,7 @@ void findByAbsolutePathEsptoolAndIsBundleAndVersion() { @ParameterizedTest @ArgumentsSource(EsptoollExecutableServiceFindAllProvider.class) - @DisplayName("findAll ") + @DisplayName("findAll saved two entities") void findAll(EsptoolExecutableEntity entity, EsptoolExecutableEntity entity2, EsptoolExecutableDto expectedEsptoolExecutableDto, EsptoolExecutableDto expectedEsptoolExecutableDto2) { diff --git a/src/test/java/com/esp/espflow/service/respository/impl/provider/esptoolexecutableprovider/EsptoolExecutableServiceFindByIsSelectedToTrueProvider.java b/src/test/java/com/esp/espflow/service/respository/impl/provider/esptoolexecutableprovider/EsptoolExecutableServiceFindByIsSelectedToTrueProvider.java new file mode 100644 index 0000000..8c80230 --- /dev/null +++ b/src/test/java/com/esp/espflow/service/respository/impl/provider/esptoolexecutableprovider/EsptoolExecutableServiceFindByIsSelectedToTrueProvider.java @@ -0,0 +1,41 @@ +package com.esp.espflow.service.respository.impl.provider.esptoolexecutableprovider; + +import com.esp.espflow.entity.EsptoolExecutableEntity; +import com.esp.espflow.entity.dto.EsptoolExecutableDto; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; + +import java.util.stream.Stream; + +public class EsptoolExecutableServiceFindByIsSelectedToTrueProvider implements ArgumentsProvider { + + @Override + public Stream provideArguments(ExtensionContext extensionContext) throws Exception { + + final EsptoolExecutableEntity entitySaved = EsptoolExecutableEntity + .builder() + .id(1L) + .name("esptool") + .absolutePathEsptool("/tmp/esptool-dir/esptool.py") + .esptoolVersion("v4.7.0") + .isBundled(false) + .isSelected(true) + .sha256("ae1a3fe6eed5bf7e5dbaee78aea868c5e62f80dd43e13a2f69016da86387a194") + .build(); + + final EsptoolExecutableDto expectedEsptoolExecutableDto = EsptoolExecutableDto + .builder() + .id(1L) + .name("esptool") + .absolutePathEsptool("/tmp/esptool-dir/esptool.py") + .esptoolVersion("v4.7.0") + .isBundled(false) + .isSelected(true) + .sha256("ae1a3fe6eed5bf7e5dbaee78aea868c5e62f80dd43e13a2f69016da86387a194") + .build(); + + return Stream.of(Arguments.of(entitySaved, expectedEsptoolExecutableDto)); + } + +}