package main

import (
	"encoding/json"
	"os"
	"path/filepath"
	"testing"
)

func TestAPIContracts_QueryRequestIncludesSubQueries(t *testing.T) {
	contractsPath := filepath.Join("..", "..", "internal", "bootstrap", "api_contracts.json")
	content, err := os.ReadFile(contractsPath)
	if err != nil {
		t.Fatalf("read api_contracts.json: %v", err)
	}

	var contract APIContract
	if err := json.Unmarshal(content, &contract); err != nil {
		t.Fatalf("unmarshal api_contracts.json: %v", err)
	}

	var queryRequest *StructDef
	for i := range contract.Definitions {
		if contract.Definitions[i].Name == "QueryRequest" {
			queryRequest = &contract.Definitions[i]
			break
		}
	}
	if queryRequest == nil {
		t.Fatal("QueryRequest definition not found")
	}

	for _, field := range queryRequest.Fields {
		if field.Name == "subQueries" {
			if field.Type != "array<SubQueryRequest>" {
				t.Fatalf("subQueries type = %q, want %q", field.Type, "array<SubQueryRequest>")
			}
			return
		}
	}

	t.Fatal("QueryRequest.subQueries field not found")
}
