Files
mistral-go-sdk/observability_events_test.go
vikingowl 9251672de6 feat: v1.1.0 — sync with upstream Python SDK v2.1.3
Add Connectors, Audio Speech/Voices, Audio Realtime types,
and Observability (beta). 41 new service methods, 116 total.

Breaking: ListModels and UploadFile signatures changed
(pass nil for previous behavior).
2026-03-24 09:07:03 +01:00

102 lines
3.1 KiB
Go

package mistral
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"somegit.dev/vikingowl/mistral-go-sdk/observability"
)
func TestSearchChatCompletionEvents_Success(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" || r.URL.Path != "/v1/observability/chat-completion-events/search" {
t.Errorf("unexpected %s %s", r.Method, r.URL.Path)
}
json.NewEncoder(w).Encode(map[string]any{
"results": []map[string]any{
{"event_id": "ev-1", "correlation_id": "c1", "created_at": "t", "nb_input_tokens": 10, "nb_output_tokens": 5},
},
})
}))
defer server.Close()
client := NewClient("key", WithBaseURL(server.URL))
resp, err := client.SearchChatCompletionEvents(context.Background(), &observability.SearchEventsRequest{})
if err != nil {
t.Fatal(err)
}
if len(resp.Results) != 1 {
t.Fatalf("got %d results", len(resp.Results))
}
if resp.Results[0].EventID != "ev-1" {
t.Errorf("got event_id %q", resp.Results[0].EventID)
}
}
func TestSearchChatCompletionEventIDs_Success(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/v1/observability/chat-completion-events/search-ids" {
t.Errorf("got path %s", r.URL.Path)
}
json.NewEncoder(w).Encode(map[string]any{
"completion_event_ids": []string{"ev-1", "ev-2"},
})
}))
defer server.Close()
client := NewClient("key", WithBaseURL(server.URL))
resp, err := client.SearchChatCompletionEventIDs(context.Background(), &observability.SearchEventIDsRequest{})
if err != nil {
t.Fatal(err)
}
if len(resp.CompletionEventIDs) != 2 {
t.Errorf("got %d ids", len(resp.CompletionEventIDs))
}
}
func TestGetChatCompletionEvent_Success(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/v1/observability/chat-completion-events/ev-1" {
t.Errorf("got path %s", r.URL.Path)
}
json.NewEncoder(w).Encode(map[string]any{
"event_id": "ev-1", "correlation_id": "c1", "created_at": "t",
"nb_input_tokens": 10, "nb_output_tokens": 5, "nb_messages": 2,
})
}))
defer server.Close()
client := NewClient("key", WithBaseURL(server.URL))
resp, err := client.GetChatCompletionEvent(context.Background(), "ev-1")
if err != nil {
t.Fatal(err)
}
if resp.EventID != "ev-1" {
t.Errorf("got event_id %q", resp.EventID)
}
}
func TestGetSimilarChatCompletionEvents_Success(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/v1/observability/chat-completion-events/ev-1/similar-events" {
t.Errorf("got path %s", r.URL.Path)
}
json.NewEncoder(w).Encode(map[string]any{
"count": 0, "results": []any{},
})
}))
defer server.Close()
client := NewClient("key", WithBaseURL(server.URL))
resp, err := client.GetSimilarChatCompletionEvents(context.Background(), "ev-1", nil)
if err != nil {
t.Fatal(err)
}
if resp.Count != 0 {
t.Errorf("got count %d", resp.Count)
}
}