package org_tangled_test

import (
	"bytes"
	"testing"

	"tangled.org/core/api/org_tangled"
)

func TestCiSubscribePipelineLogsEventRoundTrip(t *testing.T) {
	roundTrip := func(want org_tangled.CiSubscribePipelineLogs_Event) org_tangled.CiSubscribePipelineLogs_Event {
		t.Helper()
		var buf bytes.Buffer
		if err := want.Serialize(&buf); err != nil {
			t.Fatal(err)
		}
		var got org_tangled.CiSubscribePipelineLogs_Event
		if err := got.Deserialize(&buf); err != nil {
			t.Fatal(err)
		}
		return got
	}

	kind := "user"
	got := roundTrip(org_tangled.CiSubscribePipelineLogs_Event{Control: &org_tangled.CiSubscribePipelineLogs_Control{
		Content: "building", Kind: &kind, Step: 2, Time: "2026-08-30T00:00:00Z", Workflow: "ci.yml",
	}})
	if got.Control == nil || got.Control.Content != "building" || got.Control.Workflow != "ci.yml" || got.Control.Step != 2 {
		t.Fatalf("control = %+v", got.Control)
	}

	got = roundTrip(org_tangled.CiSubscribePipelineLogs_Event{Data: &org_tangled.CiSubscribePipelineLogs_Data{
		Content: "hello", Step: 1, Stream: "stdout", Time: "2026-08-30T00:00:00Z", Workflow: "ci.yml",
	}})
	if got.Data == nil || got.Data.Content != "hello" || got.Data.Stream != "stdout" {
		t.Fatalf("data = %+v", got.Data)
	}

}
