summaryrefslogtreecommitdiff
path: root/internal/event/event_test.go
blob: a2cd14364fc308feebd3e07e1bd1bfd4d2c4ac62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package event

import (
	"encoding/json"
	"testing"
	"time"
)

func TestEvent_JSONRoundTrip(t *testing.T) {
	original := Event{
		ID:        "evt-1",
		TaskID:    "task-1",
		Seq:       42,
		Timestamp: time.Date(2026, 5, 22, 12, 0, 0, 0, time.UTC),
		Kind:      KindClarificationRequest,
		Actor:     ActorAgent,
		Payload:   json.RawMessage(`{"question":"which env?"}`),
	}

	data, err := json.Marshal(original)
	if err != nil {
		t.Fatalf("marshal: %v", err)
	}

	var got Event
	if err := json.Unmarshal(data, &got); err != nil {
		t.Fatalf("unmarshal: %v", err)
	}

	if got.ID != original.ID || got.TaskID != original.TaskID || got.Seq != original.Seq {
		t.Errorf("id/task/seq mismatch: got %+v want %+v", got, original)
	}
	if !got.Timestamp.Equal(original.Timestamp) {
		t.Errorf("timestamp mismatch: got %v want %v", got.Timestamp, original.Timestamp)
	}
	if got.Kind != original.Kind || got.Actor != original.Actor {
		t.Errorf("kind/actor mismatch: got %v/%v want %v/%v", got.Kind, got.Actor, original.Kind, original.Actor)
	}
	if string(got.Payload) != string(original.Payload) {
		t.Errorf("payload mismatch: got %s want %s", got.Payload, original.Payload)
	}
}