Ctrl K
ComunidadGuías…

internal/domain/welcome_message_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package domain

import (
	"errors"
	"testing"
)

func TestWelcomeMessageContentAndFingerprint(t *testing.T) {
	peer := Peer{Type: PeerTypeChannel, ID: 42}
	content := WelcomeMessageContent{Message: "Welcome 👋"}
	if err := content.Validate(); err != nil {
		t.Fatalf("valid content: %v", err)
	}
	first, err := WelcomeCreateFingerprint(peer, 7, 99, content)
	if err != nil {
		t.Fatal(err)
	}
	second, err := WelcomeCreateFingerprint(peer, 7, 99, content)
	if err != nil || first != second || first == ([32]byte{}) {
		t.Fatalf("deterministic fingerprint = %x/%x err=%v", first, second, err)
	}
	changed, err := WelcomeCreateFingerprint(peer, 7, 99, WelcomeMessageContent{Message: "Different"})
	if err != nil || changed == first {
		t.Fatalf("changed fingerprint = %x err=%v", changed, err)
	}
	if err := (WelcomeMessageContent{Message: "text", InvertMedia: true}).Validate(); !errors.Is(err, ErrWelcomeMessageInvalid) {
		t.Fatalf("invert without media err = %v", err)
	}
}

func TestWelcomeMessageEditFields(t *testing.T) {
	current := WelcomeMessageContent{Message: "before", NoForwards: true}
	updated, err := (WelcomeMessageEditFields{
		SetMessage: true, Message: "after", SetEntities: true,
	}).Apply(current)
	if err != nil {
		t.Fatal(err)
	}
	if updated.Message != "after" || !updated.NoForwards || len(updated.Entities) != 0 {
		t.Fatalf("updated content = %+v", updated)
	}
	if _, err := (WelcomeMessageEditFields{}).Apply(current); !errors.Is(err, ErrWelcomeMessageInvalid) {
		t.Fatalf("empty edit err = %v", err)
	}
}

func TestNextWelcomeRevision(t *testing.T) {
	if next, err := NextWelcomeRevision(InitialWelcomeRevision); err != nil || next != 2 {
		t.Fatalf("next revision = %d,%v", next, err)
	}
	if _, err := NextWelcomeRevision(0); !errors.Is(err, ErrWelcomeMessageRevisionOverflow) {
		t.Fatalf("zero revision err = %v", err)
	}
}