package model

import "testing"

func TestGatewayIdentityKey(t *testing.T) {
	if got, want := GatewayIdentityKey(" gw ", "inst-1", "grpc://one"), "gw|inst-1"; got != want {
		t.Fatalf("unexpected gateway identity key: got=%q want=%q", got, want)
	}
	if got, want := GatewayIdentityKey("gw", "", " grpc://one "), "gw|grpc://one"; got != want {
		t.Fatalf("unexpected gateway identity key with invoke fallback: got=%q want=%q", got, want)
	}
	if got, want := GatewayIdentityKey(" gw ", "", ""), "gw"; got != want {
		t.Fatalf("unexpected gateway identity key with id only: got=%q want=%q", got, want)
	}
	if got := GatewayIdentityKey("", "inst-1", "grpc://one"); got != "" {
		t.Fatalf("expected empty key when gateway id missing, got=%q", got)
	}
}

func TestLessGatewayDescriptor(t *testing.T) {
	a := &GatewayInstanceDescriptor{ID: "gw", InstanceID: "inst-a", InvokeURI: "grpc://a"}
	b := &GatewayInstanceDescriptor{ID: "gw", InstanceID: "inst-b", InvokeURI: "grpc://b"}
	if !LessGatewayDescriptor(a, b) {
		t.Fatalf("expected inst-a to sort before inst-b")
	}
	if LessGatewayDescriptor(b, a) {
		t.Fatalf("expected inst-b not to sort before inst-a")
	}
}
