test: File processing service unit tests
This commit is contained in:
parent
2025cca693
commit
141551c3d8
4 changed files with 70 additions and 0 deletions
|
@ -0,0 +1,62 @@
|
||||||
|
package eu.ztsh.lfr.core.impl.files;
|
||||||
|
|
||||||
|
import eu.ztsh.lfr.config.DataProperties;
|
||||||
|
import eu.ztsh.lfr.model.FileProcessingException;
|
||||||
|
import eu.ztsh.lfr.model.events.FileProcessedEvent;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatNoException;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
|
class FileLoadingServiceTest {
|
||||||
|
|
||||||
|
private final ApplicationEventPublisher eventPublisher = Mockito.mock(ApplicationEventPublisher.class);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void successfulRunTest() {
|
||||||
|
var captor = ArgumentCaptor.forClass(FileProcessedEvent.class);
|
||||||
|
var service = createFileLoadingService("success.csv");
|
||||||
|
assertThatNoException().isThrownBy(service::onFileModified);
|
||||||
|
Mockito.verify(eventPublisher, Mockito.times(1))
|
||||||
|
.publishEvent(captor.capture());
|
||||||
|
var averages = captor.getValue().averages();
|
||||||
|
assertThat(averages).hasSize(1);
|
||||||
|
var list = averages.get("Warszawa");
|
||||||
|
assertThat(list).hasSize(1);
|
||||||
|
assertThat(list.getFirst()).satisfies(item -> {
|
||||||
|
assertThat(item.getYear()).isEqualTo("2018");
|
||||||
|
// 29.2775, but it is BigDecimal with scale 2 and round half up
|
||||||
|
assertThat(item.getAverageTemperature().doubleValue()).isEqualTo(29.28);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void notExistingFileTest() {
|
||||||
|
var service = createFileLoadingService("not-existing.csv");
|
||||||
|
assertThatThrownBy(service::onFileModified)
|
||||||
|
.isInstanceOf(FileProcessingException.class)
|
||||||
|
.hasRootCauseInstanceOf(IOException.class);
|
||||||
|
Mockito.verifyNoInteractions(eventPublisher);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void malformedFileTest() {
|
||||||
|
var service = createFileLoadingService("malformed.csv");
|
||||||
|
assertThatThrownBy(service::onFileModified)
|
||||||
|
.isInstanceOf(FileProcessingException.class)
|
||||||
|
.hasMessage("Error in line Warszawa;2018-09-21 11:17:42.31833.27")
|
||||||
|
.hasRootCauseInstanceOf(ArrayIndexOutOfBoundsException.class);
|
||||||
|
Mockito.verifyNoInteractions(eventPublisher);
|
||||||
|
}
|
||||||
|
|
||||||
|
private FileLoadingService createFileLoadingService(String path) {
|
||||||
|
return new FileLoadingService(new DataProperties("src/test/resources/" + path), eventPublisher);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
4
src/test/resources/malformed.csv
Normal file
4
src/test/resources/malformed.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
Warszawa;2018-09-19 05:17:32.619;9.97
|
||||||
|
Warszawa;2018-09-20 18:44:42.468;39.02
|
||||||
|
Warszawa;2018-09-21 11:17:42.31833.27
|
||||||
|
Warszawa;2018-09-22 19:25:07.568;34.85
|
|
4
src/test/resources/success.csv
Normal file
4
src/test/resources/success.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
Warszawa;2018-09-19 05:17:32.619;9.97
|
||||||
|
Warszawa;2018-09-20 18:44:42.468;39.02
|
||||||
|
Warszawa;2018-09-21 11:17:42.318;33.27
|
||||||
|
Warszawa;2018-09-22 19:25:07.568;34.85
|
|
Loading…
Add table
Add a link
Reference in a new issue