package mongo

import (
	"context"
	"testing"

	"go.mongodb.org/mongo-driver/bson"

	"bit.admedia.com/scm/ad/adpilot-indexing-commit-intel.com/internal/contracts/graph"
)

func TestStoreLoadDeltaByURI(t *testing.T) {
	store, cleanup := setupMongoStore(t)
	defer cleanup()

	ctx := context.Background()
	deltaID := "delta_target456_a1b2"
	_, err := store.deltasCollection(collectionGraphDeltas).InsertOne(ctx, bson.M{
		"delta_id":          deltaID,
		"repo_id":           "ad/example",
		"snapshot_id":       "snap_abc123",
		"base_commit_sha":   "base1234567890",
		"target_commit_sha": "target4567890ab",
		"schema_version":    graph.DeltaSchemaVersionV1,
		"changed_files":     []string{"internal/main.go"},
		"file_deltas": []bson.M{
			{
				"file_path": "internal/main.go",
				"added_nodes": []bson.M{
					{"kind": graph.NodeKindSymbol, "name": "Run"},
				},
			},
		},
	})
	if err != nil {
		t.Fatalf("insert delta: %v", err)
	}

	delta, err := store.LoadDeltaByURI(ctx, "mongo://graph_deltas/"+deltaID)
	if err != nil {
		t.Fatalf("LoadDeltaByURI: %v", err)
	}
	if delta.RepoID != "ad/example" {
		t.Fatalf("repo_id: got %q", delta.RepoID)
	}
	if delta.SnapshotID != "snap_abc123" {
		t.Fatalf("snapshot_id: got %q", delta.SnapshotID)
	}
	if len(delta.FileDeltas) != 1 {
		t.Fatalf("expected 1 file delta, got %d", len(delta.FileDeltas))
	}
}
