owpengram-server/internal/store/postgres/dialog_draft_get_integration_test.go

49 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package postgres
import (
"context"
"testing"
"time"
"telesrv/internal/domain"
)
// TestDialogDraftGetRoundTrip 回归GetDraftdraft_message 事件重放按 peer 重载权威态)
// 与 SaveDraft/DeleteDraft 的键语义一致user, peer, top_message_id
func TestDialogDraftGetRoundTrip(t *testing.T) {
pool := testPool(t)
ctx := context.Background()
suffix := randomSuffix(t)
owner, err := NewUserStore(pool).Create(ctx, domain.User{AccessHash: 31, Phone: "+1777" + suffix + "01", FirstName: "DraftOwner"})
if err != nil {
t.Fatalf("create owner: %v", err)
}
userID := owner.ID
peer := domain.Peer{Type: domain.PeerTypeUser, ID: userID + 1}
t.Cleanup(func() {
_, _ = pool.Exec(ctx, "DELETE FROM dialog_drafts WHERE user_id = $1", userID)
_, _ = pool.Exec(ctx, "DELETE FROM users WHERE id = $1", userID)
})
dialogs := NewDialogStore(pool)
if _, found, err := dialogs.GetDraft(ctx, userID, peer, 0); err != nil || found {
t.Fatalf("get missing draft = found %v err %v, want absent", found, err)
}
saved := domain.DialogDraft{Peer: peer, Message: "pg roundtrip", Date: int(time.Now().Unix())}
if err := dialogs.SaveDraft(ctx, userID, saved); err != nil {
t.Fatalf("save draft: %v", err)
}
got, found, err := dialogs.GetDraft(ctx, userID, peer, 0)
if err != nil || !found {
t.Fatalf("get draft = found %v err %v, want present", found, err)
}
if got.Message != "pg roundtrip" || got.Peer != peer {
t.Fatalf("draft = %+v, want saved payload", got)
}
if _, err := dialogs.DeleteDraft(ctx, userID, peer, 0); err != nil {
t.Fatalf("delete draft: %v", err)
}
if _, found, err := dialogs.GetDraft(ctx, userID, peer, 0); err != nil || found {
t.Fatalf("get deleted draft = found %v err %v, want absent", found, err)
}
}