X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/c781f79f3c8cb9a7577ee1574d196988da2719b3..6c7859cfea123479aba046614ee81028651ddaf5:/whatsapp_import_test.go diff --git a/whatsapp_import_test.go b/whatsapp_import_test.go index 553a2cb..eed22fd 100644 --- a/whatsapp_import_test.go +++ b/whatsapp_import_test.go @@ -704,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)