From c58508c01d69862107e99aafb6fa21bd838f0174 Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Mon, 6 Oct 2025 21:06:34 +0200 Subject: [PATCH] [Platform][Result] Make BinaryResult properties private with getters - Changed data and mimeType properties from public to private - Added getData() and getMimeType() getter methods - Updated all test files to use new getter methods instead of direct property access - Added comprehensive BinaryResultTest with tests for all methods including the new getters --- src/platform/src/Result/BinaryResult.php | 9 ++- .../ElevenLabs/ElevenLabsConverterTest.php | 2 +- .../Gemini/Gemini/ResultConverterTest.php | 4 +- .../HuggingFace/ResultConverterTest.php | 2 +- .../VertexAi/Gemini/ResultConverterTest.php | 4 +- .../tests/Result/BinaryResultTest.php | 61 +++++++++++++++++++ 6 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 src/platform/tests/Result/BinaryResultTest.php diff --git a/src/platform/src/Result/BinaryResult.php b/src/platform/src/Result/BinaryResult.php index c137adfad..f85e08c00 100644 --- a/src/platform/src/Result/BinaryResult.php +++ b/src/platform/src/Result/BinaryResult.php @@ -19,11 +19,16 @@ final class BinaryResult extends BaseResult { public function __construct( - public string $data, - public ?string $mimeType = null, + private string $data, + private ?string $mimeType = null, ) { } + public function getMimeType(): ?string + { + return $this->mimeType; + } + public function getContent(): string { return $this->data; diff --git a/src/platform/tests/Bridge/ElevenLabs/ElevenLabsConverterTest.php b/src/platform/tests/Bridge/ElevenLabs/ElevenLabsConverterTest.php index 7ba865372..2339335aa 100644 --- a/src/platform/tests/Bridge/ElevenLabs/ElevenLabsConverterTest.php +++ b/src/platform/tests/Bridge/ElevenLabs/ElevenLabsConverterTest.php @@ -66,6 +66,6 @@ public function getContent(): string $result = $converter->convert($rawResult); $this->assertInstanceOf(BinaryResult::class, $result); - $this->assertSame('audio/mpeg', $result->mimeType); + $this->assertSame('audio/mpeg', $result->getMimeType()); } } diff --git a/src/platform/tests/Bridge/Gemini/Gemini/ResultConverterTest.php b/src/platform/tests/Bridge/Gemini/Gemini/ResultConverterTest.php index 3b615ab88..62052d888 100644 --- a/src/platform/tests/Bridge/Gemini/Gemini/ResultConverterTest.php +++ b/src/platform/tests/Bridge/Gemini/Gemini/ResultConverterTest.php @@ -103,7 +103,7 @@ public function testConvertsInlineDataToBinaryResult() $result = $converter->convert(new RawHttpResult($httpResponse)); $this->assertInstanceOf(BinaryResult::class, $result); $this->assertSame('base64EncodedImageData', $result->getContent()); - $this->assertSame('image/png', $result->mimeType); + $this->assertSame('image/png', $result->getMimeType()); } public function testConvertsInlineDataWithoutMimeTypeToBinaryResult() @@ -130,6 +130,6 @@ public function testConvertsInlineDataWithoutMimeTypeToBinaryResult() $result = $converter->convert(new RawHttpResult($httpResponse)); $this->assertInstanceOf(BinaryResult::class, $result); $this->assertSame('base64EncodedData', $result->getContent()); - $this->assertNull($result->mimeType); + $this->assertNull($result->getMimeType()); } } diff --git a/src/platform/tests/Bridge/HuggingFace/ResultConverterTest.php b/src/platform/tests/Bridge/HuggingFace/ResultConverterTest.php index f08bd31ae..91d055dac 100644 --- a/src/platform/tests/Bridge/HuggingFace/ResultConverterTest.php +++ b/src/platform/tests/Bridge/HuggingFace/ResultConverterTest.php @@ -230,6 +230,6 @@ public function testConvertWithTextToImageTask() $this->assertInstanceOf(BinaryResult::class, $convertedResult); $this->assertSame($binaryContent, $convertedResult->getContent()); - $this->assertSame('image/png', $convertedResult->mimeType); + $this->assertSame('image/png', $convertedResult->getMimeType()); } } diff --git a/src/platform/tests/Bridge/VertexAi/Gemini/ResultConverterTest.php b/src/platform/tests/Bridge/VertexAi/Gemini/ResultConverterTest.php index f43bcd0b2..5c6ba611b 100644 --- a/src/platform/tests/Bridge/VertexAi/Gemini/ResultConverterTest.php +++ b/src/platform/tests/Bridge/VertexAi/Gemini/ResultConverterTest.php @@ -154,7 +154,7 @@ public function testConvertsInlineDataToBinaryResult() $this->assertInstanceOf(BinaryResult::class, $result); $this->assertSame('base64EncodedImageData', $result->getContent()); - $this->assertSame('image/png', $result->mimeType); + $this->assertSame('image/png', $result->getMimeType()); } public function testConvertsInlineDataWithoutMimeTypeToBinaryResult() @@ -184,6 +184,6 @@ public function testConvertsInlineDataWithoutMimeTypeToBinaryResult() $this->assertInstanceOf(BinaryResult::class, $result); $this->assertSame('base64EncodedData', $result->getContent()); - $this->assertNull($result->mimeType); + $this->assertNull($result->getMimeType()); } } diff --git a/src/platform/tests/Result/BinaryResultTest.php b/src/platform/tests/Result/BinaryResultTest.php new file mode 100644 index 000000000..8bed637c1 --- /dev/null +++ b/src/platform/tests/Result/BinaryResultTest.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\AI\Platform\Tests\Result; + +use PHPUnit\Framework\TestCase; +use Symfony\AI\Platform\Result\BinaryResult; + +final class BinaryResultTest extends TestCase +{ + public function testGetContent() + { + $result = new BinaryResult($expected = 'binary data'); + $this->assertSame($expected, $result->getContent()); + } + + public function testGetMimeType() + { + $result = new BinaryResult('binary data', $expected = 'image/png'); + $this->assertSame($expected, $result->getMimeType()); + } + + public function testGetMimeTypeReturnsNullWhenNotSet() + { + $result = new BinaryResult('binary data'); + $this->assertNull($result->getMimeType()); + } + + public function testToBase64() + { + $data = 'Hello World'; + $result = new BinaryResult($data); + $this->assertSame(base64_encode($data), $result->toBase64()); + } + + public function testToDataUri() + { + $data = 'Hello World'; + $mimeType = 'text/plain'; + $result = new BinaryResult($data, $mimeType); + $this->assertSame('data:text/plain;base64,'.base64_encode($data), $result->toDataUri()); + } + + public function testToDataUriThrowsExceptionWhenMimeTypeNotSet() + { + $result = new BinaryResult('binary data'); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionMessage('Mime type is not set.'); + + $result->toDataUri(); + } +}