}
}
+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)