package connector_inbound_routing

import (
	"context"
	"errors"
	"testing"
)

// Compile-time interface check.
var _ RouteResolver = NoopRouteResolver{}

func TestNoopRouteResolver_ResolveFlow_AlwaysReturnsErrRouteNotDeclared(t *testing.T) {
	r := NoopRouteResolver{}
	version, flow, err := r.ResolveFlow(context.Background(), "some-namespace", "install-123", "some.event.kind")
	if version != 0 {
		t.Errorf("expected version=0, got %d", version)
	}
	if flow != "" {
		t.Errorf("expected empty flow, got %q", flow)
	}
	if !errors.Is(err, ErrRouteNotDeclared) {
		t.Errorf("expected ErrRouteNotDeclared, got %v", err)
	}
}

func TestNoopRouteResolver_ResolveFlowByVersion_AlwaysReturnsErrRouteNotDeclared(t *testing.T) {
	r := NoopRouteResolver{}
	flow, err := r.ResolveFlowByVersion(context.Background(), "install-123", "some.event.kind", 1)
	if flow != "" {
		t.Errorf("expected empty flow, got %q", flow)
	}
	if !errors.Is(err, ErrRouteNotDeclared) {
		t.Errorf("expected ErrRouteNotDeclared, got %v", err)
	}
}

func TestNoopRouteResolver_ImplementsRouteResolver(t *testing.T) {
	var r RouteResolver = NoopRouteResolver{}
	_, _, err := r.ResolveFlow(context.Background(), "ns", "install-123", "ek")
	if !errors.Is(err, ErrRouteNotDeclared) {
		t.Errorf("expected ErrRouteNotDeclared via interface, got %v", err)
	}
}
