]> git.giacomolli.uk - onechat/blobdiff - whatsapp_fake_helper_test.go
Give the WhatsApp batches their own type
[onechat] / whatsapp_fake_helper_test.go
index c9bc8357efc79e527fb8ffe7f746f57b5aec1c77..3d7d117c0337967156eb096767ee15b06a27166f 100644 (file)
@@ -309,3 +309,46 @@ func whatsappTestMessage(chat, sender types.JID, id, text string, at time.Time)
                },
        }
 }
                },
        }
 }
+
+// whatsappTestLogTexts returns the texts of the messages in the log of memory,
+// after the log holds at least one message.
+func whatsappTestLogTexts(t *testing.T, memory *Memory) []string {
+       t.Helper()
+
+       require.Eventually(t, func() bool {
+               return memory.Len() > 0
+       }, 10*time.Second, time.Millisecond)
+
+       var texts []string
+       for id := range memory.Len() {
+               message, err := memory.Message(id)
+               require.NoError(t, err)
+
+               texts = append(texts, message.Text)
+       }
+
+       return texts
+}
+
+// whatsappStartTestLinked opens a WhatsApp with a linked device in a temporary
+// directory, with a quiet time of 50 ms for its batches.
+func whatsappStartTestLinked(t *testing.T) (*WhatsApp, *WhatsAppFake) {
+       t.Helper()
+
+       dir := t.TempDir()
+       whatsappTestSession(t, dir, true)
+       whatsapp, fake, _ := whatsappStartTest(t, dir, newTestClock())
+       whatsapp.state.quiet = 50 * time.Millisecond
+
+       return whatsapp, fake
+}
+
+// whatsappTestConnect waits for the connection of the daemon and gives it the
+// events of a connection with an empty catch-up.
+func whatsappTestConnect(t *testing.T, fake *WhatsAppFake) {
+       t.Helper()
+
+       <-fake.connects
+       require.True(t, fake.Emit(&events.Connected{}))
+       require.True(t, fake.Emit(&events.OfflineSyncCompleted{}))
+}