X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/4343ca5fb6cc86eb887951f4fe16063bab29a238..03ef9525ba0e62037b55606b851ee746967a003f:/whatsapp_import_test.go?ds=inline diff --git a/whatsapp_import_test.go b/whatsapp_import_test.go index 4bd0a1f..eed22fd 100644 --- a/whatsapp_import_test.go +++ b/whatsapp_import_test.go @@ -486,6 +486,7 @@ func TestWhatsAppImportChildPlanReadsRootCutoffButNotRootImportedDays(t *testing Date: "2025-01-03T10:20:00Z", }, }) + rebuildTestLog(t, childDir, []DatedMessage{ { Kind: "work", @@ -529,6 +530,7 @@ func TestWhatsAppImportChildRebuildUsesOwnPromptAndCache(t *testing.T) { Text: "Keep the root history.", Date: "2025-02-01T00:00:00Z", }}) + rebuildTestLog(t, childDir, []DatedMessage{{ Kind: "user", Text: "Keep the child history.", @@ -702,6 +704,49 @@ func TestWhatsAppImportRefusesPendingDeliveriesAndKeepsRestartSafe(t *testing.T) } } +func TestWhatsAppImportBlocksPendingNotificationsButNotCompletedReceipts(t *testing.T) { + testCases := []struct { + name string + index int + }{ + { + name: "blocks only pending root notifications", + }, + { + name: "blocks only pending child notifications", + index: 1, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + server := newModelFake(t) + server.reply = func(w http.ResponseWriter, _ ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("")}, 100, 0, 5)) + } + + test := newDaemonMessageTest(t, t.TempDir(), server) + _, err := test.messages.Notify(&NotifyInput{ + AgentID: test.agents[tc.index].agent.config.ID, + Source: "check", + ID: "1", + Text: "A result.", + }) + require.NoError(t, err) + + target := test.agents[tc.index].agent + directory := test.agents[0].agent.dir + require.ErrorContains(t, whatsappImportIdle(directory, target), "pending deliveries") + require.NoError(t, whatsappImportIdle(directory, test.agents[tc.index^1].agent)) + require.NoError(t, test.messages.Notifications(test.loops[tc.index])) + require.NoError(t, test.loops[tc.index].turn(t.Context())) + require.Len(t, test.Queue(t).Notifications, 1) + require.Empty(t, test.Queue(t).Pending) + require.NoError(t, whatsappImportIdle(directory, target)) + }) + } +} + func TestWhatsAppImportPendingDeliveriesBlockOnlyTheirTarget(t *testing.T) { dir := t.TempDir() t.Setenv("ONECHAT_DIR", dir)