diff --git a/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java b/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java new file mode 100644 index 00000000..16afc7c1 --- /dev/null +++ b/hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FileClientImplTest.java @@ -0,0 +1,65 @@ +package com.openelements.hiero.base.test; + +import com.hedera.hashgraph.sdk.FileId; +import com.openelements.hiero.base.HieroException; +import com.openelements.hiero.base.implementation.FileClientImpl; +import com.openelements.hiero.base.protocol.FileInfoRequest; +import com.openelements.hiero.base.protocol.FileInfoResponse; +import com.openelements.hiero.base.protocol.ProtocolLayerClient; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +public class FileClientImplTest { + ProtocolLayerClient protocolLayerClient; + FileClientImpl fileClientImpl; + + @BeforeEach + void setup() { + protocolLayerClient = Mockito.mock(ProtocolLayerClient.class); + fileClientImpl = new FileClientImpl(protocolLayerClient); + } + + @Test + void testGetFileSize() throws HieroException { + // mocks + final int size = 10; + final FileInfoResponse response = Mockito.mock(FileInfoResponse.class); + + // given + final FileId fileId = FileId.fromString("1.2.3"); + + // then + when(response.size()).thenReturn(size); + when(protocolLayerClient.executeFileInfoQuery(any(FileInfoRequest.class))) + .thenReturn(response); + + final int result = fileClientImpl.getSize(fileId); + + verify(protocolLayerClient, times(1)) + .executeFileInfoQuery(any(FileInfoRequest.class)); + verify(response, times(1)).size(); + Assertions.assertEquals(size, result); + } + + @Test + void testGetFileSizeThrowsExceptionForInvalidId() throws HieroException { + // given + final FileId fileId = FileId.fromString("1.2.3"); + + // then + when(protocolLayerClient.executeFileInfoQuery(any(FileInfoRequest.class))) + .thenThrow(new HieroException("Failed to execute query")); + + Assertions.assertThrows(HieroException.class, () -> fileClientImpl.getSize(fileId)); + } + + @Test + void testGetFileSizeThrowsExceptionForNullId() { + Assertions.assertThrows(NullPointerException.class, () -> fileClientImpl.getSize(null)); + } +} diff --git a/hiero-enterprise-base/src/test/java/module-info.java b/hiero-enterprise-base/src/test/java/module-info.java index d2676317..556f918e 100644 --- a/hiero-enterprise-base/src/test/java/module-info.java +++ b/hiero-enterprise-base/src/test/java/module-info.java @@ -4,4 +4,5 @@ requires static org.jspecify; requires org.junit.jupiter.api; requires org.junit.jupiter.params; + requires org.mockito; } \ No newline at end of file diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java index 3c6dc691..aa2b0d13 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/FileClientTests.java @@ -27,6 +27,7 @@ void testNullParams() { Assertions.assertThrows(NullPointerException.class, () -> fileClient.deleteFile((String) null)); Assertions.assertThrows(NullPointerException.class, () -> fileClient.deleteFile((FileId) null)); Assertions.assertThrows(NullPointerException.class, () -> fileClient.getExpirationTime(null)); + Assertions.assertThrows(NullPointerException.class, () -> fileClient.getSize(null)); } @Test @@ -240,4 +241,19 @@ void testUpdateExpirationTimeDoesNotChangeContent() throws Exception { //then Assertions.assertArrayEquals(contents, result); } + + @Test + void testGetFileSize() throws HieroException { + final byte[] contents = "Hello, Hiero!".getBytes(); + final FileId fileId = fileClient.createFile(contents); + final int size = fileClient.getSize(fileId); + + Assertions.assertEquals(size, contents.length); + } + + @Test + void testGetFileSizeThrowsExceptionForInvalidId() { + final FileId invalidFileId = FileId.fromString("1.2.3"); + Assertions.assertThrows(HieroException.class, () -> fileClient.getSize(invalidFileId)); + } }