X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/d647f33b3e70f9419f6c0740e1d01b210439a519..e0ab6220b6fd35f7e92a04e4bf149940185713ab:/responses_test.go diff --git a/responses_test.go b/responses_test.go index 6017ad7..3ff3277 100644 --- a/responses_test.go +++ b/responses_test.go @@ -197,6 +197,46 @@ func TestClientRecordsEachCall(t *testing.T) { require.Equal(t, os.FileMode(0o600), info.Mode().Perm()) } +func TestClientStopsAtTheFirstOutputItem(t *testing.T) { + server := newFakeResponses(t) + server.reply = func(w http.ResponseWriter, call fakeCall) { + writeEvents(w, + map[string]any{"type": "response.created"}, + map[string]any{"type": "response.output_item.added", "item": messageItem("")}, + ) + } + + client := newTestClient(t, server) + request := testRequest() + request.StopAtOutput = true + request.Turn = "warmup" + response, err := client.Create(t.Context(), request) + require.NoError(t, err) + require.Empty(t, response.Output) + + request.StopAtOutput = false + _, err = client.Create(t.Context(), request) + require.ErrorContains(t, err, "event stream ended before the response completed") +} + +func TestClientRefusesCallsOverTheLimit(t *testing.T) { + server := newFakeResponses(t) + client := newTestClient(t, server) + client.LimitCalls(2) + + for range 2 { + require.False(t, client.LimitReached()) + _, err := client.Create(t.Context(), testRequest()) + require.NoError(t, err) + } + + require.True(t, client.LimitReached()) + _, err := client.Create(t.Context(), testRequest()) + require.ErrorIs(t, err, errCallLimit) + require.Equal(t, 2, server.Calls()) + require.Len(t, readUsage(t, client.usage.path), 2) +} + func TestClientFailsWhenTheResponseFails(t *testing.T) { testCases := []struct { name string