package model import ( "github.com/tech/sendico/pkg/discovery" "testing" "github.com/shopspring/decimal" ) func TestIsGatewayEligible_AllowsMatchingGateway(t *testing.T) { gw := &GatewayInstanceDescriptor{ ID: "gw-1", InstanceID: "inst-1", Rail: discovery.RailCrypto, Network: "TRON", Currencies: []string{"USDT"}, Operations: []RailOperation{discovery.RailOperationSend, discovery.RailOperationExternalCredit}, IsEnabled: true, } err := IsGatewayEligible(gw, discovery.RailCrypto, "TRON", "USDT", discovery.RailOperationSend, GatewayDirectionOut, decimal.RequireFromString("10")) if err != nil { t.Fatalf("expected gateway to be eligible, got err=%v", err) } } func TestIsGatewayEligible_RejectsNetworkMismatch(t *testing.T) { gw := &GatewayInstanceDescriptor{ ID: "gw-1", InstanceID: "inst-1", Rail: discovery.RailCrypto, Network: "ETH", Currencies: []string{"USDT"}, Operations: []RailOperation{discovery.RailOperationSend}, IsEnabled: true, } err := IsGatewayEligible(gw, discovery.RailCrypto, "TRON", "USDT", discovery.RailOperationSend, GatewayDirectionOut, decimal.RequireFromString("10")) if err == nil { t.Fatalf("expected network mismatch error") } } func TestNoEligibleGatewayMessage(t *testing.T) { got := NoEligibleGatewayMessage("tron", "usdt", discovery.RailOperationSend, GatewayDirectionOut) want := "plan builder: no eligible gateway found for TRON USDT SEND for direction out" if got != want { t.Fatalf("unexpected message: got=%q want=%q", got, want) } }