package api_test

import (
	"testing"
	"time"

	apicontract "bit.admedia.com/scm/ad/adpilot-indexing-repo-sync.com/internal/contracts/api"
	"bit.admedia.com/scm/ad/adpilot-indexing-repo-sync.com/internal/domain"
)

func TestSnapshotFromDomain(t *testing.T) {
	created := time.Date(2026, 5, 26, 11, 0, 0, 0, time.UTC)

	snap := domain.Snapshot{
		SnapshotID: "snap_test12345678",
		RepoID:     "ad/example-repo",
		CommitSHA:  "abc123",
		Ref:        "master",
		FileCount:  42,
		Status:     domain.SnapshotStatusReady,
		CreatedAt:  created,
	}

	got := apicontract.SnapshotFromDomain(snap)
	if got.SnapshotID != snap.SnapshotID {
		t.Fatalf("snapshot_id: got %q, want %q", got.SnapshotID, snap.SnapshotID)
	}
	if got.RepoID != snap.RepoID {
		t.Fatalf("repo_id: got %q, want %q", got.RepoID, snap.RepoID)
	}
	if got.CommitSHA != snap.CommitSHA {
		t.Fatalf("commit_sha: got %q, want %q", got.CommitSHA, snap.CommitSHA)
	}
	if got.Ref != snap.Ref {
		t.Fatalf("ref: got %q, want %q", got.Ref, snap.Ref)
	}
	if got.FileCount != snap.FileCount {
		t.Fatalf("file_count: got %d, want %d", got.FileCount, snap.FileCount)
	}
	if got.Status != snap.Status {
		t.Fatalf("status: got %q, want %q", got.Status, snap.Status)
	}
	if !got.CreatedAt.Equal(snap.CreatedAt) {
		t.Fatalf("created_at: got %v, want %v", got.CreatedAt, snap.CreatedAt)
	}
}
