Files
hyprvoice/internal/transcriber/adapter_elevenlabs_test.go
T

108 lines
2.7 KiB
Go

package transcriber
import (
"context"
"testing"
"github.com/leonardotrapani/hyprvoice/internal/provider"
)
func TestNewElevenLabsAdapter(t *testing.T) {
endpoint := &provider.EndpointConfig{
BaseURL: "https://api.elevenlabs.io",
Path: "/v1/speech-to-text",
}
adapter := NewElevenLabsAdapter(endpoint, "test-api-key", "scribe_v1", "en")
if adapter == nil {
t.Fatalf("NewElevenLabsAdapter() returned nil")
}
if adapter.apiKey != "test-api-key" {
t.Errorf("APIKey not set correctly, got: %s", adapter.apiKey)
}
if adapter.model != "scribe_v1" {
t.Errorf("Model not set correctly, got: %s", adapter.model)
}
if adapter.language != "en" {
t.Errorf("Language not set correctly, got: %s", adapter.language)
}
if adapter.endpoint.BaseURL != "https://api.elevenlabs.io" {
t.Errorf("Endpoint BaseURL not set correctly, got: %s", adapter.endpoint.BaseURL)
}
if adapter.endpoint.Path != "/v1/speech-to-text" {
t.Errorf("Endpoint Path not set correctly, got: %s", adapter.endpoint.Path)
}
}
func TestNewElevenLabsAdapterFromConfig(t *testing.T) {
config := Config{
Provider: "elevenlabs",
APIKey: "test-api-key",
Language: "en",
Model: "scribe_v1",
}
adapter := NewElevenLabsAdapterFromConfig(config)
if adapter == nil {
t.Fatalf("NewElevenLabsAdapterFromConfig() returned nil")
}
if adapter.apiKey != "test-api-key" {
t.Errorf("APIKey not set correctly, got: %s", adapter.apiKey)
}
if adapter.model != "scribe_v1" {
t.Errorf("Model not set correctly, got: %s", adapter.model)
}
// should use default endpoint
if adapter.endpoint.BaseURL != "https://api.elevenlabs.io" {
t.Errorf("Default endpoint BaseURL not set correctly, got: %s", adapter.endpoint.BaseURL)
}
}
func TestElevenLabsAdapter_Transcribe_EmptyAudio(t *testing.T) {
endpoint := &provider.EndpointConfig{
BaseURL: "https://api.elevenlabs.io",
Path: "/v1/speech-to-text",
}
adapter := NewElevenLabsAdapter(endpoint, "test-key", "scribe_v1", "")
ctx := context.Background()
result, err := adapter.Transcribe(ctx, []byte{})
if err != nil {
t.Errorf("Transcribe() with empty audio should not error, got: %v", err)
}
if result != "" {
t.Errorf("Transcribe() with empty audio should return empty string, got: %s", result)
}
}
func TestElevenLabsAdapter_Transcribe_ValidAudio(t *testing.T) {
endpoint := &provider.EndpointConfig{
BaseURL: "https://api.elevenlabs.io",
Path: "/v1/speech-to-text",
}
adapter := NewElevenLabsAdapter(endpoint, "test-key", "scribe_v1", "en")
if adapter == nil {
t.Fatal("NewElevenLabsAdapter() returned nil")
}
// test that adapter has a client
if adapter.client == nil {
t.Error("adapter.client is nil")
}
}