X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/09cde69fdffe2721434392036f98dc241177f5a1..153f3f9b4b09d521412eacca30eddeed395c3f41:/telegram_test.go?ds=inline diff --git a/telegram_test.go b/telegram_test.go index 9111d13..a1a1ed2 100644 --- a/telegram_test.go +++ b/telegram_test.go @@ -14,15 +14,15 @@ import ( ) func TestOwnerTalksToTheAgentThroughTelegram(t *testing.T) { - server := newFakeResponses(t) - server.reply = func(w http.ResponseWriter, call fakeCall) { - writeEvents(w, completedEvent([]any{messageItem("Hello from the agent.")}, 100, 0, 5)) + server := newModelFake(t) + server.reply = func(w http.ResponseWriter, call ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("Hello from the agent.")}, 100, 0, 5)) } telegram := newTelegramFake(t) bot, _ := telegramStartTestBot(t, telegram) socket := startTestDaemonWithBot(t, server, bot) - terminal := startTestClient(t, socket) + terminal := terminalStartTestClient(t, socket) terminal.WaitFor(t, "[connected to OneChat]") telegram.Add(TelegramUpdate{ @@ -43,8 +43,8 @@ func TestOwnerTalksToTheAgentThroughTelegram(t *testing.T) { func TestBotIgnoresEveryoneButTheOwner(t *testing.T) { telegram := newTelegramFake(t) bot, logs := telegramStartTestBot(t, telegram) - socket := startTestDaemonWithBot(t, newFakeResponses(t), bot) - terminal := startTestClient(t, socket) + socket := startTestDaemonWithBot(t, newModelFake(t), bot) + terminal := terminalStartTestClient(t, socket) terminal.WaitFor(t, "[connected to OneChat]") group := telegramOwnerMessage("secret in a group") @@ -81,7 +81,7 @@ func TestBotIgnoresEveryoneButTheOwner(t *testing.T) { func TestBotAnswersThatOnlyTextIsSupported(t *testing.T) { telegram := newTelegramFake(t) bot, _ := telegramStartTestBot(t, telegram) - startTestDaemonWithBot(t, newFakeResponses(t), bot) + startTestDaemonWithBot(t, newModelFake(t), bot) telegram.Add(TelegramUpdate{ UpdateID: 1, @@ -92,14 +92,14 @@ func TestBotAnswersThatOnlyTextIsSupported(t *testing.T) { } func TestStopFromTelegramInterruptsTheTurn(t *testing.T) { - server := newFakeResponses(t) + server := newModelFake(t) 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 } @@ -130,9 +130,9 @@ func TestStopFromTelegramInterruptsTheTurn(t *testing.T) { } func TestBotStartsAtTheStoredOffset(t *testing.T) { - server := newFakeResponses(t) - server.reply = func(w http.ResponseWriter, call fakeCall) { - writeEvents(w, completedEvent([]any{messageItem("ok")}, 100, 0, 5)) + server := newModelFake(t) + server.reply = func(w http.ResponseWriter, call ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("ok")}, 100, 0, 5)) } telegram := newTelegramFake(t) @@ -150,7 +150,7 @@ func TestBotStartsAtTheStoredOffset(t *testing.T) { }) socket := startTestDaemonWithBot(t, server, bot) - terminal := startTestClient(t, socket) + terminal := terminalStartTestClient(t, socket) terminal.WaitFor(t, "[connected to OneChat]") telegramWaitForSent(t, telegram, "ok") @@ -164,9 +164,9 @@ func TestBotStartsAtTheStoredOffset(t *testing.T) { } func TestBotTriesAgainAfterFailures(t *testing.T) { - server := newFakeResponses(t) - server.reply = func(w http.ResponseWriter, call fakeCall) { - writeEvents(w, completedEvent([]any{messageItem("ok")}, 100, 0, 5)) + server := newModelFake(t) + server.reply = func(w http.ResponseWriter, call ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("ok")}, 100, 0, 5)) } telegram := newTelegramFake(t) @@ -229,15 +229,15 @@ func TestDeliverTriesAgainAfterATimeout(t *testing.T) { func TestRepliesGoAsRichMessages(t *testing.T) { reply := "**Done.** The table:\n\n| Name | Size |\n|:-----|-----:|\n| `a.go` | 10 |\n\n- one\n- two\n\n```go\nx := 1\n```" - server := newFakeResponses(t) - server.reply = func(w http.ResponseWriter, call fakeCall) { - writeEvents(w, completedEvent([]any{messageItem(reply)}, 100, 0, 5)) + server := newModelFake(t) + server.reply = func(w http.ResponseWriter, call ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem(reply)}, 100, 0, 5)) } telegram := newTelegramFake(t) bot, _ := telegramStartTestBot(t, telegram) socket := startTestDaemonWithBot(t, server, bot) - terminal := startTestClient(t, socket) + terminal := terminalStartTestClient(t, socket) terminal.WaitFor(t, "[connected to OneChat]") terminal.Type("make **it** so") @@ -423,7 +423,7 @@ func TestBotLogsNoTokenWhenTheNetworkFails(t *testing.T) { telegram.Close() bot, logs := telegramStartTestBot(t, telegram) - startTestDaemonWithBot(t, newFakeResponses(t), bot) + startTestDaemonWithBot(t, newModelFake(t), bot) require.Eventually(t, func() bool { return strings.Count(logs.String(), "no valid answer") >= 2 @@ -653,10 +653,10 @@ func TestLoadBotConfig(t *testing.T) { // telegramStartTestBot returns a bot of telegramTestOwner on server, with its // offset file in a temporary directory and short waits, and the buffer of its // log. -func telegramStartTestBot(t *testing.T, server *TelegramFake) (*TelegramBot, *syncBuffer) { +func telegramStartTestBot(t *testing.T, server *TelegramFake) (*TelegramBot, *SyncBuffer) { t.Helper() - logs := &syncBuffer{} + logs := &SyncBuffer{} bot := newTelegramBot(newTelegramAPI(server.URL, telegramTestToken), telegramTestOwner, filepath.Join(t.TempDir(), telegramOffsetFileName), log.New(logs, "", 0)) bot.minWait = time.Millisecond bot.maxWait = 10 * time.Millisecond