]> git.giacomolli.uk - onechat/blobdiff - daemon_test.go
Name and order the ChatGPT login code
[onechat] / daemon_test.go
index 00680e6fec697e028bdeeadf25688f698257b3fc..d1f1bc5e9c4c0b700e4c20bd77949e99a56b9668 100644 (file)
@@ -17,14 +17,14 @@ import (
 )
 
 func TestClientsSeeTheTurnAsItHappens(t *testing.T) {
 )
 
 func TestClientsSeeTheTurnAsItHappens(t *testing.T) {
-       server := newFakeResponses(t)
-       server.reply = func(w http.ResponseWriter, call fakeCall) {
+       server := newModelFake(t)
+       server.reply = func(w http.ResponseWriter, call ModelFakeCall) {
                if call.number == 0 {
                if call.number == 0 {
-                       writeEvents(w, completedEvent([]any{functionCallItem("fc_1", "call_1", "shell", `{"command":"echo hi"}`)}, 100, 0, 5))
+                       modelWriteEvents(w, modelCompletedEvent([]any{modelFunctionCallItem("fc_1", "call_1", "shell", `{"command":"echo hi"}`)}, 100, 0, 5))
                        return
                }
 
                        return
                }
 
-               writeEvents(w, completedEvent([]any{messageItem("It said hi.")}, 100, 0, 5))
+               modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("It said hi.")}, 100, 0, 5))
        }
 
        socket := startTestDaemon(t, server)
        }
 
        socket := startTestDaemon(t, server)
@@ -46,14 +46,14 @@ func TestClientsSeeTheTurnAsItHappens(t *testing.T) {
 }
 
 func TestStopInterruptsTheTurn(t *testing.T) {
 }
 
 func TestStopInterruptsTheTurn(t *testing.T) {
-       server := newFakeResponses(t)
+       server := newModelFake(t)
        arrived := make(chan struct{})
        release := make(chan struct{})
        t.Cleanup(func() {
                close(release)
        })
 
        arrived := make(chan struct{})
        release := make(chan struct{})
        t.Cleanup(func() {
                close(release)
        })
 
-       server.reply = func(w http.ResponseWriter, call fakeCall) {
+       server.reply = func(w http.ResponseWriter, call ModelFakeCall) {
                close(arrived)
                <-release
        }
                close(arrived)
                <-release
        }
@@ -239,7 +239,14 @@ func (b *syncBuffer) String() string {
 // startTestDaemon serves a new agent on a socket in a temporary directory and
 // returns the socket path. The commands of the agent run in a temporary
 // directory.
 // startTestDaemon serves a new agent on a socket in a temporary directory and
 // returns the socket path. The commands of the agent run in a temporary
 // directory.
-func startTestDaemon(t *testing.T, server *fakeResponses) string {
+func startTestDaemon(t *testing.T, server *ModelFake) string {
+       t.Helper()
+
+       return startTestDaemonWithBot(t, server, nil)
+}
+
+// startTestDaemonWithBot is startTestDaemon with bot, which can be nil.
+func startTestDaemonWithBot(t *testing.T, server *ModelFake, bot *TelegramBot) string {
        t.Helper()
 
        dir := t.TempDir()
        t.Helper()
 
        dir := t.TempDir()
@@ -255,11 +262,11 @@ func startTestDaemon(t *testing.T, server *fakeResponses) string {
        listener, err := listenSocket(socket)
        require.NoError(t, err)
 
        listener, err := listenSocket(socket)
        require.NoError(t, err)
 
-       client := newClient(server.URL, apiKey(testKey), agent.CacheKey(), filepath.Join(agent.dir, "usage.jsonl"))
+       client := newModelClient(server.URL, ModelAPIKey(modelTestKey), agent.CacheKey(), filepath.Join(agent.dir, "usage.jsonl"))
        ctx, cancel := context.WithCancel(t.Context())
        done := make(chan error)
        go func() {
        ctx, cancel := context.WithCancel(t.Context())
        done := make(chan error)
        go func() {
-               done <- serveAgent(ctx, listener, func(notify func(Event)) (*loop, error) {
+               done <- serveAgent(ctx, listener, bot, func(notify func(Event)) (*loop, error) {
                        return newLoop(agent, memory, client, clock.Now, notify)
                })
        }()
                        return newLoop(agent, memory, client, clock.Now, notify)
                })
        }()