72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package mapper
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"caatsm/internal/domain"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func TestTelegramMapper_ToDBRow_GeneratesUUIDWhenEmpty(t *testing.T) {
|
|
mapper := NewTelegramMapper()
|
|
msg := &domain.ParsedMessage{}
|
|
|
|
row, err := mapper.ToDBRow(msg)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
value, ok := row[0].(uuid.UUID)
|
|
if !ok {
|
|
t.Fatalf("expected first column to be uuid.UUID, got %T", row[0])
|
|
}
|
|
if value == uuid.Nil {
|
|
t.Fatalf("expected generated uuid to be non-nil")
|
|
}
|
|
}
|
|
|
|
func TestTelegramMapper_FromDBRow_RoundTrip(t *testing.T) {
|
|
mapper := NewTelegramMapper()
|
|
now := time.Now().UTC()
|
|
|
|
original := &domain.ParsedMessage{
|
|
Uuid: uuid.NewString(),
|
|
MessageID: "TMQ1324",
|
|
DateTime: "150631",
|
|
PriorityIndicator: "FF",
|
|
PrimaryAddress: "ZBTJZPZX",
|
|
SecondaryAddresses: "150630 ZBACZQZX",
|
|
Originator: "ORIGIN",
|
|
OriginatorDateTime: "150630",
|
|
Category: "FPL",
|
|
Content: "raw telegram",
|
|
BodyData: map[string]string{"key": "value"},
|
|
ReceivedAt: now,
|
|
ParsedAt: now,
|
|
DispatchedAt: now,
|
|
NeedDispatch: true,
|
|
}
|
|
|
|
row, err := mapper.ToDBRow(original)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
roundTrip, err := mapper.FromDBRow(row)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error reading row: %v", err)
|
|
}
|
|
|
|
if roundTrip.Uuid != original.Uuid {
|
|
t.Fatalf("expected uuid %s, got %s", original.Uuid, roundTrip.Uuid)
|
|
}
|
|
if roundTrip.MessageID != original.MessageID {
|
|
t.Fatalf("expected message_id %s, got %s", original.MessageID, roundTrip.MessageID)
|
|
}
|
|
if roundTrip.NeedDispatch != original.NeedDispatch {
|
|
t.Fatalf("expected need_dispatch %v, got %v", original.NeedDispatch, roundTrip.NeedDispatch)
|
|
}
|
|
}
|