package customer import "testing" func TestPickActiveCompanyID(t *testing.T) { assigned := []string{"company-a", "company-b"} tests := []struct { name string assigned []string token string requested string want string wantErr bool wantErrType error }{ { name: "uses requested company when assigned", assigned: assigned, token: "company-a", requested: "company-b", want: "company-b", }, { name: "rejects requested company that is not assigned", assigned: assigned, token: "company-a", requested: "company-c", wantErr: true, wantErrType: errCompanyNotAssigned, }, { name: "keeps valid token company", assigned: assigned, token: "company-b", want: "company-b", }, { name: "falls back to first assignment when token company was removed", assigned: []string{"company-b"}, token: "company-a", want: "company-b", }, { name: "returns empty when customer has no companies", assigned: nil, token: "company-a", want: "", }, { name: "uses first assignment when token is empty", assigned: assigned, want: "company-a", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := pickActiveCompanyID(tt.assigned, tt.token, tt.requested) if tt.wantErr { if err == nil { t.Fatalf("expected error, got nil") } if tt.wantErrType != nil && err != tt.wantErrType { t.Fatalf("expected error %v, got %v", tt.wantErrType, err) } return } if err != nil { t.Fatalf("unexpected error: %v", err) } if got != tt.want { t.Fatalf("pickActiveCompanyID() = %q, want %q", got, tt.want) } }) } }