Skip to content
Snippets Groups Projects
Commit 3c471be6 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6162 OZG-7060 Set filename in constructor

parent 6f5469a6
Branches release
Tags 2.7.0
No related merge requests found
...@@ -6,15 +6,20 @@ import java.util.Iterator; ...@@ -6,15 +6,20 @@ import java.util.Iterator;
import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse; import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse;
import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.common.errorhandling.TechnicalException;
import lombok.RequiredArgsConstructor; import lombok.Getter;
@RequiredArgsConstructor
class StreamedExportedVorgangFile implements ExportedVorgangFile { class StreamedExportedVorgangFile implements ExportedVorgangFile {
@Getter
private final String fileName;
private final Iterator<GrpcExportVorgangResponse> responseIterator; private final Iterator<GrpcExportVorgangResponse> responseIterator;
@Override public StreamedExportedVorgangFile(Iterator<GrpcExportVorgangResponse> responseIterator) {
public String getFileName() { this.fileName = getFileNameFrom(responseIterator);
this.responseIterator = responseIterator;
}
static String getFileNameFrom(Iterator<GrpcExportVorgangResponse> responseIterator) {
if (!responseIterator.hasNext()) { if (!responseIterator.hasNext()) {
throw new TechnicalException("Response is empty"); throw new TechnicalException("Response is empty");
} }
......
...@@ -7,11 +7,12 @@ import java.io.IOException; ...@@ -7,11 +7,12 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Iterator; import java.util.Iterator;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockedStatic;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import com.thedeanda.lorem.LoremIpsum; import com.thedeanda.lorem.LoremIpsum;
...@@ -23,11 +24,40 @@ class StreamedExportedVorgangFileTest { ...@@ -23,11 +24,40 @@ class StreamedExportedVorgangFileTest {
@Mock @Mock
private Iterator<GrpcExportVorgangResponse> responseIterator; private Iterator<GrpcExportVorgangResponse> responseIterator;
@InjectMocks
private StreamedExportedVorgangFile exportedVorgangFile;
@Nested @Nested
class TestGetFileName { class TestContructor {
private MockedStatic<StreamedExportedVorgangFile> mockedStatic;
@BeforeEach
void init() {
mockedStatic = mockStatic(StreamedExportedVorgangFile.class);
mockedStatic.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
}
@AfterEach
void cleanup() {
mockedStatic.close();
}
@Test
void shouldGetFileNameFromResponseIterator() {
new StreamedExportedVorgangFile(responseIterator);
mockedStatic.verify(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator));
}
@Test
void shouldSetFileName() {
var exportedVorgangFile = new StreamedExportedVorgangFile(responseIterator);
assertThat(exportedVorgangFile.getFileName()).isEqualTo(GrpcFileTestFactory.FILE_NAME);
}
}
@Nested
class TestGetFileNameFrom {
@Nested @Nested
class OnEmptyResponse { class OnEmptyResponse {
...@@ -39,7 +69,7 @@ class StreamedExportedVorgangFileTest { ...@@ -39,7 +69,7 @@ class StreamedExportedVorgangFileTest {
@Test @Test
void shouldThrowException() { void shouldThrowException() {
assertThatExceptionOfType(TechnicalException.class).isThrownBy(exportedVorgangFile::getFileName); assertThatExceptionOfType(TechnicalException.class).isThrownBy(TestGetFileNameFrom.this::callTestedMethod);
} }
} }
...@@ -54,25 +84,29 @@ class StreamedExportedVorgangFileTest { ...@@ -54,25 +84,29 @@ class StreamedExportedVorgangFileTest {
@Test @Test
void shouldCallHasNext() { void shouldCallHasNext() {
exportedVorgangFile.getFileName(); callTestedMethod();
verify(responseIterator).hasNext(); verify(responseIterator).hasNext();
} }
@Test @Test
void shouldCallNextOnce() { void shouldCallNextOnce() {
exportedVorgangFile.getFileName(); callTestedMethod();
verify(responseIterator, times(1)).next(); verify(responseIterator, times(1)).next();
} }
@Test @Test
void shouldReturnFileName() { void shouldReturnFileName() {
var fileName = exportedVorgangFile.getFileName(); var fileName = callTestedMethod();
assertThat(fileName).isEqualTo(GrpcFileTestFactory.FILE_NAME); assertThat(fileName).isEqualTo(GrpcFileTestFactory.FILE_NAME);
} }
} }
private String callTestedMethod() {
return StreamedExportedVorgangFile.getFileNameFrom(responseIterator);
}
} }
@Nested @Nested
...@@ -84,8 +118,12 @@ class StreamedExportedVorgangFileTest { ...@@ -84,8 +118,12 @@ class StreamedExportedVorgangFileTest {
@Mock @Mock
private OutputStream outputStream; private OutputStream outputStream;
private MockedStatic<StreamedExportedVorgangFile> mockedStatic;
@BeforeEach @BeforeEach
void init() { void init() {
mockedStatic = mockStatic(StreamedExportedVorgangFile.class);
mockedStatic.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
when(responseIterator.hasNext()) when(responseIterator.hasNext())
.thenReturn(true) .thenReturn(true)
.thenReturn(true) .thenReturn(true)
...@@ -97,16 +135,19 @@ class StreamedExportedVorgangFileTest { ...@@ -97,16 +135,19 @@ class StreamedExportedVorgangFileTest {
).build()); ).build());
} }
@AfterEach
void cleanup() {
mockedStatic.close();
}
@Test @Test
void shouldWriteFileContentInOrder() throws IOException { void shouldWriteFileContentInOrder() throws IOException {
var orderVerifier = inOrder(outputStream); var orderVerifier = inOrder(outputStream);
exportedVorgangFile.writeToOutputStream(outputStream); new StreamedExportedVorgangFile(responseIterator).writeToOutputStream(outputStream);
orderVerifier.verify(outputStream).write(FILE_CONTENT_1.toByteArray()); orderVerifier.verify(outputStream).write(FILE_CONTENT_1.toByteArray());
orderVerifier.verify(outputStream).write(FILE_CONTENT_2.toByteArray()); orderVerifier.verify(outputStream).write(FILE_CONTENT_2.toByteArray());
} }
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment