package steme

import (
	"testing"
)

// TestQueryBuilder tests the fluent query builder API.
func TestQueryBuilder(t *testing.T) {
	lens := LensConsensus
	lifecycle := LifecycleApproved

	params := NewQuery().
		WithSubject("Tesla_Inc").
		WithPredicate("has_revenue").
		WithLens(lens).
		WithLifecycle(lifecycle).
		WithLimit(10).
		Build()

	if params.Subject == nil || *params.Subject != "Tesla_Inc" {
		t.Errorf("Subject = %v, want Tesla_Inc", params.Subject)
	}

	if params.Predicate == nil || *params.Predicate != "has_revenue" {
		t.Errorf("Predicate = %v, want has_revenue", params.Predicate)
	}

	if params.Lens == nil || *params.Lens != LensConsensus {
		t.Errorf("Lens = %v, want Consensus", params.Lens)
	}

	if params.Lifecycle == nil || *params.Lifecycle != LifecycleApproved {
		t.Errorf("Lifecycle = %v, want Approved", params.Lifecycle)
	}

	if params.Limit != 10 {
		t.Errorf("Limit = %d, want 10", params.Limit)
	}
}
