X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/087d725b5ab41ad34ffd24938482d45a8b99a080..80e348724041a694002fc38f57e8868b9b9a2be9:/model_fake_helper_test.go diff --git a/model_fake_helper_test.go b/model_fake_helper_test.go index 08c4732..f9d1451 100644 --- a/model_fake_helper_test.go +++ b/model_fake_helper_test.go @@ -34,6 +34,21 @@ type ModelFake struct { reply func(http.ResponseWriter, ModelFakeCall) } +func newModelFake(t *testing.T) *ModelFake { + t.Helper() + + f := &ModelFake{ + reply: func(w http.ResponseWriter, _ ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("a line")}, 100, 0, 5)) + }, + } + + f.Server = httptest.NewServer(http.HandlerFunc(f.serve)) + t.Cleanup(f.Close) + + return f +} + // Call returns call number n. func (f *ModelFake) Call(n int) ModelFakeCall { f.mutex.Lock() @@ -54,6 +69,7 @@ func (f *ModelFake) serve(w http.ResponseWriter, r *http.Request) { raw, err := io.ReadAll(r.Body) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) + return } @@ -65,10 +81,12 @@ func (f *ModelFake) serve(w http.ResponseWriter, r *http.Request) { err = json.Unmarshal(raw, &call.body) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) + return } f.mutex.Lock() + call.number = len(f.calls) f.calls = append(f.calls, call) reply := f.reply @@ -77,21 +95,6 @@ func (f *ModelFake) serve(w http.ResponseWriter, r *http.Request) { reply(w, call) } -func newModelFake(t *testing.T) *ModelFake { - t.Helper() - - f := &ModelFake{ - reply: func(w http.ResponseWriter, _ ModelFakeCall) { - modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("a line")}, 100, 0, 5)) - }, - } - - f.Server = httptest.NewServer(http.HandlerFunc(f.serve)) - t.Cleanup(f.Close) - - return f -} - func modelTestRequest() ModelRequest { return ModelRequest{ Model: "gpt-test", @@ -103,6 +106,7 @@ func modelTestRequest() ModelRequest { // modelWriteEvents writes events as a server-sent event stream. func modelWriteEvents(w http.ResponseWriter, events ...any) { w.Header().Set("Content-Type", "text/event-stream") + for _, event := range events { data, err := json.Marshal(event) if err != nil { @@ -155,10 +159,13 @@ func modelReadUsage(t *testing.T, path string) []ModelUsageRecord { }() var records []ModelUsageRecord + scanner := bufio.NewScanner(file) for scanner.Scan() { var record ModelUsageRecord + require.NoError(t, json.Unmarshal(scanner.Bytes(), &record)) + records = append(records, record) } @@ -167,15 +174,6 @@ func modelReadUsage(t *testing.T, path string) []ModelUsageRecord { return records } -func modelReasoningItem(id, encrypted string) map[string]any { - return map[string]any{ - "type": "reasoning", - "id": id, - "encrypted_content": encrypted, - "summary": []any{}, - } -} - func modelFunctionCallItem(id, callID, name, arguments string) map[string]any { return map[string]any{ "type": "function_call",