| 381 | } |
| 382 | |
| 383 | func TestBuildOperationID(t *testing.T) { |
| 384 | const svcName = "test service" |
| 385 | |
| 386 | cases := []struct { |
| 387 | Name string |
| 388 | DSL func() |
| 389 | |
| 390 | ExpectedOperationIDs []string |
| 391 | }{ |
| 392 | { |
| 393 | Name: "template_in_method", |
| 394 | DSL: dsls.OperationIDMethod(svcName, "template_in_method", "{method}"), |
| 395 | ExpectedOperationIDs: []string{"template_in_method"}, |
| 396 | }, { |
| 397 | Name: "template_in_service", |
| 398 | DSL: dsls.OperationIDService(svcName, "template_in_service", "{service}"), |
| 399 | ExpectedOperationIDs: []string{"test service"}, |
| 400 | }, { |
| 401 | Name: "template_in_api", |
| 402 | DSL: dsls.OperationIDAPI(svcName, "template_in_api", defaultOperationIDFormat), |
| 403 | ExpectedOperationIDs: []string{"test service#template_in_api"}, |
| 404 | }, { |
| 405 | Name: "multiple_routes", |
| 406 | DSL: dsls.OperationIDMultipleRoutes(svcName, "multiple_routes", defaultOperationIDFormat), |
| 407 | ExpectedOperationIDs: []string{"test service#multiple_routes", "test service#multiple_routes#1"}, |
| 408 | }, { |
| 409 | Name: "multiple_routes_custom_separator", |
| 410 | DSL: dsls.OperationIDMultipleRoutes(svcName, "multiple_routes_custom_separator", "{service}.{method}(.{routeIndex})"), |
| 411 | ExpectedOperationIDs: []string{"test service.multiple_routes_custom_separator", "test service.multiple_routes_custom_separator.1"}, |
| 412 | }, { |
| 413 | Name: "multiple_routes_custom_separator_without_routeIndex", |
| 414 | DSL: dsls.OperationIDMultipleRoutes(svcName, "multiple_routes_custom_separator_without_routeIndex", "{service}.{method}"), |
| 415 | ExpectedOperationIDs: []string{"test service.multiple_routes_custom_separator_without_routeIndex", "test service.multiple_routes_custom_separator_without_routeIndex#1"}, |
| 416 | }, { |
| 417 | Name: "multiple_routes_no_routeIndex_separator", |
| 418 | DSL: dsls.OperationIDMultipleRoutes(svcName, "multiple_routes_no_routeIndex_separator", "{service}.{method}({routeIndex})"), |
| 419 | ExpectedOperationIDs: []string{"test service.multiple_routes_no_routeIndex_separator", "test service.multiple_routes_no_routeIndex_separator1"}, |
| 420 | }, { |
| 421 | Name: "multiple_routes_long_separator", |
| 422 | DSL: dsls.OperationIDMultipleRoutes(svcName, "multiple_routes_long_separator", "{service}.{method}(someWordsHere and maybe some spaces{routeIndex})"), |
| 423 | ExpectedOperationIDs: []string{"test service.multiple_routes_long_separator", "test service.multiple_routes_long_separatorsomeWordsHere and maybe some spaces1"}, |
| 424 | }, { |
| 425 | Name: "custom_static_operation_id", |
| 426 | DSL: dsls.OperationIDMethod(svcName, "custom_static_operation_id", "listThings"), |
| 427 | ExpectedOperationIDs: []string{"listThings"}, |
| 428 | }, |
| 429 | } |
| 430 | |
| 431 | for _, c := range cases { |
| 432 | t.Run(c.Name, func(t *testing.T) { |
| 433 | api := codegen.RunDSL(t, c.DSL).API |
| 434 | |
| 435 | if len(api.HTTP.Services) == 0 { |
| 436 | t.Error("no HTTP service created from DSL") |
| 437 | } |
| 438 | |
| 439 | for _, s := range api.HTTP.Services { |
| 440 | if s.Name() == svcName { |