package service

import (
	"context"
	"testing"

	reposync "github.com/pingcap/agent-git-service/internal/sync"
	"github.com/pingcap/agent-git-service/internal/sync/canonical"
)

func TestResolveRepositorySyncBatchRelationsKeepsTargetParentOnDelete(t *testing.T) {
	record := canonical.NewRecord(canonical.TypeIssueComment, "target-comment", "comment:1", map[string]any{"body": "x"})
	record.ParentType, record.ParentIdentity = canonical.TypePullRequest, "target-pull"
	payload, err := record.Payload()
	if err != nil {
		t.Fatal(err)
	}
	batch := reposync.PhysicalBatch{Items: []reposync.PlannedItem{{Action: reposync.ActionDelete, Payload: payload}}}
	service := &Service{}
	if err := service.ResolveRepositorySyncBatchRelations(context.Background(), 1, SyncSideA, &batch); err != nil {
		t.Fatal(err)
	}
	resolved, err := canonical.Decode(batch.Items[0].Payload)
	if err != nil {
		t.Fatal(err)
	}
	if resolved.ParentIdentity != "target-pull" {
		t.Fatalf("target parent identity changed to %q", resolved.ParentIdentity)
	}
}
