|
6 | 6 | use GuzzleHttp\Psr7\Response; |
7 | 7 | use Illuminate\Support\Arr; |
8 | 8 | use Mockery\MockInterface; |
| 9 | +use MoeMizrak\LaravelOpenrouter\DTO\AudioContentData; |
9 | 10 | use MoeMizrak\LaravelOpenrouter\DTO\ChatData; |
10 | 11 | use MoeMizrak\LaravelOpenrouter\DTO\CostResponseData; |
11 | 12 | use MoeMizrak\LaravelOpenrouter\DTO\ImageContentPartData; |
12 | 13 | use MoeMizrak\LaravelOpenrouter\DTO\ImageUrlData; |
| 14 | +use MoeMizrak\LaravelOpenrouter\DTO\InputAudioData; |
13 | 15 | use MoeMizrak\LaravelOpenrouter\DTO\LimitResponseData; |
14 | 16 | use MoeMizrak\LaravelOpenrouter\DTO\MessageData; |
15 | 17 | use MoeMizrak\LaravelOpenrouter\DTO\ProviderPreferencesData; |
|
20 | 22 | use MoeMizrak\LaravelOpenrouter\Exceptions\OpenRouterValidationException; |
21 | 23 | use MoeMizrak\LaravelOpenrouter\Facades\LaravelOpenRouter; |
22 | 24 | use MoeMizrak\LaravelOpenrouter\OpenRouterRequest; |
| 25 | +use MoeMizrak\LaravelOpenrouter\Types\AudioFormatType; |
23 | 26 | use MoeMizrak\LaravelOpenrouter\Types\DataCollectionType; |
24 | 27 | use MoeMizrak\LaravelOpenrouter\Types\EffortType; |
25 | 28 | use MoeMizrak\LaravelOpenrouter\Types\RoleType; |
@@ -538,6 +541,43 @@ public function it_successfully_sends_image_and_text_content_in_messages_in_the_ |
538 | 541 | $this->assertNotNull(Arr::get($response->choices[0], 'message.content')); |
539 | 542 | } |
540 | 543 |
|
| 544 | + // test for the audio content |
| 545 | + #[Test] |
| 546 | + public function it_successfully_sends_audio_in_content_in_messages_in_the_open_route_api_request() |
| 547 | + { |
| 548 | + /* SETUP */ |
| 549 | + $data = base64_encode('fake-audio-data'); // Simulated base64 audio data |
| 550 | + $audioContentData = new AudioContentData( |
| 551 | + type: AudioContentData::ALLOWED_TYPE, // it can only take input_audio for audio content |
| 552 | + input_audio: new InputAudioData( |
| 553 | + data: $data, |
| 554 | + format: AudioFormatType::MP3, |
| 555 | + ), |
| 556 | + ); |
| 557 | + $messageData = new MessageData( |
| 558 | + content: [ |
| 559 | + $audioContentData, |
| 560 | + ], |
| 561 | + role: RoleType::USER, |
| 562 | + ); |
| 563 | + $chatData = new ChatData( |
| 564 | + messages: [ |
| 565 | + $messageData, |
| 566 | + ], |
| 567 | + model: $this->model, |
| 568 | + max_tokens: $this->maxTokens, |
| 569 | + ); |
| 570 | + $this->mockOpenRouter($this->mockBasicBody()); |
| 571 | + |
| 572 | + /* EXECUTE */ |
| 573 | + $response = $this->api->chatRequest($chatData); |
| 574 | + |
| 575 | + /* ASSERT */ |
| 576 | + $this->generalTestAssertions($response); |
| 577 | + $this->assertEquals(RoleType::ASSISTANT, Arr::get($response->choices[0], 'message.role')); |
| 578 | + $this->assertNotNull(Arr::get($response->choices[0], 'message.content')); |
| 579 | + } |
| 580 | + |
541 | 581 | #[Test] |
542 | 582 | public function it_successfully_sends_multiple_text_content_in_messages_in_the_open_route_api_request() |
543 | 583 | { |
|
0 commit comments