diff --git a/packages/cadl-ranch-specs/cadl-ranch-summary.md b/packages/cadl-ranch-specs/cadl-ranch-summary.md index a87d199ea..aaca65846 100644 --- a/packages/cadl-ranch-specs/cadl-ranch-summary.md +++ b/packages/cadl-ranch-specs/cadl-ranch-summary.md @@ -2228,6 +2228,99 @@ This test is testing sending a csv collection format array query parameters This test is testing sending a csv collection format array header parameters +### Parameters_Spread_Model_spreadAsRequestBody + +- Endpoint: `put /parameters/spread/model/request-body` + +Test case for spread named model. + +Should generate request body model named `BodyParameter`. +Should generate an operation like below: + +``` +spreadAsRequestBody(bodyParameter: BodyParameter) +``` + +Note the parameter name is guessed from the model name and it may vary by language. + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Alias_spreadAsRequestBody + +- Endpoint: `put /parameters/spread/alias/request-body` + +Test case for spread alias. + +Should not generate any model named `BodyParameter`. +Should generate an operation like: + +``` +spreadAsRequestBody(name: string) +``` + +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Alias_spreadAsRequestParameter + +- Endpoint: `put /parameters/spread/alias/request-parameter/{id}` + +Test case for spread alias with path and header parameter. + +Should not generate any model named `RequestParameter`. +Should generate an operation like below: + +``` +spreadAsRequestParameter(id: string, x_ms_test_header: string, name: string) +``` + +Note the parameter name may be normalized and vary by language. + +Expected path parameter: id="1" +Expected header parameter: x-ms-test-header="bar" +Expected request body: + +```json +{ "name": "foo" } +``` + +### Parameters_Spread_Alias_spreadWithMultipleParameters + +- Endpoint: `put /parameters/spread/alias/multiple-parameters/{id}` + +Test case for spread alias including 6 parameters. May handle as property bag for these parameters. + +Should not generate any model named `AliasMultipleRequestParameters`. +Should generate an operation like below: + +``` +spreadWithMultipleParameters(id: string, x_ms_test_header: string, prop1: string, prop2: string, prop3: string, prop4: string, prop5: string, prop6: string) +``` + +Note it's also acceptable if some languages handle it as property bag. + +Expected path parameter: id="1" +Expected header parameter: x-ms-test-header="bar" +Expected request body: + +```json +{ + "prop1": "foo1", + "prop2": "foo2", + "prop3": "foo3", + "prop4": "foo4", + "prop5": "foo5", + "prop6": "foo6" +} +``` + ### ProjectedName_jsonProjection - Endpoint: `post /projection/json` @@ -2470,99 +2563,6 @@ Expected input body: } ``` -### Spread_Model_spreadModelAsRequestBody - -- Endpoint: `put /spread/model/request-body` - -Test case for spread named model. - -Should generate request body model named `BodyParameter`. -Should generate an operation like below: - -``` -spreadModelAsRequestBody(bodyParameter: BodyParameter) -``` - -Note the parameter name is guessed from the model name and it may vary by language. - -Expected request body: - -```json -{ "name": "foo" } -``` - -### Spread_Alias_spreadAsRequestBody - -- Endpoint: `put /spread/alias/request-body` - -Test case for spread alias. - -Should not generate any model named `BodyParameter`. -Should generate an operation like: - -``` -spreadAsRequestBody(name: string) -``` - -Expected request body: - -```json -{ "name": "foo" } -``` - -### Spread_Alias_spreadAsRequestParameter - -- Endpoint: `put /spread/alias/request-parameter/{id}` - -Test case for spread alias with path and header parameter. - -Should not generate any model named `RequestParameter`. -Should generate an operation like below: - -``` -spreadAsRequestParameter(id: string, x_ms_test_header: string, name: string) -``` - -Note the parameter name may be normalized and vary by language. - -Expected path parameter: id="1" -Expected header parameter: x-ms-test-header="bar" -Expected request body: - -```json -{ "name": "foo" } -``` - -### Spread_Alias_spreadWithMultipleParameters - -- Endpoint: `put /spread/alias/multiple-parameters/{id}` - -Test case for spread alias including 6 parameters. May handle as property bag for these parameters. - -Should not generate any model named `AliasMultipleRequestParameters`. -Should generate an operation like below: - -``` -spreadWithMultipleParameters(id: string, x_ms_test_header: string, prop1: string, prop2: string, prop3: string, prop4: string, prop5: string, prop6: string) -``` - -Note it's also acceptable if some languages handle it as property bag. - -Expected path parameter: id="1" -Expected header parameter: x-ms-test-header="bar" -Expected request body: - -```json -{ - "prop1": "foo1", - "prop2": "foo2", - "prop3": "foo3", - "prop4": "foo4", - "prop5": "foo5", - "prop6": "foo6" -} -``` - ### Unions_sendInt - Endpoint: `post /unions/int` diff --git a/packages/cadl-ranch-specs/http/spread/main.tsp b/packages/cadl-ranch-specs/http/parameters/spread/main.tsp similarity index 94% rename from packages/cadl-ranch-specs/http/spread/main.tsp rename to packages/cadl-ranch-specs/http/parameters/spread/main.tsp index 199faa01a..71e8208c4 100644 --- a/packages/cadl-ranch-specs/http/spread/main.tsp +++ b/packages/cadl-ranch-specs/http/parameters/spread/main.tsp @@ -7,8 +7,8 @@ using Azure.ClientGenerator.Core; @doc("Test for the spread operator.") @supportedBy("dpg") -@scenarioService("/spread") -namespace Spread; +@scenarioService("/parameters/spread") +namespace Parameters.Spread; @route("/model") @operationGroup @@ -25,7 +25,7 @@ namespace Model { Should generate request body model named `BodyParameter`. Should generate an operation like below: ``` - spreadModelAsRequestBody(bodyParameter: BodyParameter) + spreadAsRequestBody(bodyParameter: BodyParameter) ``` Note the parameter name is guessed from the model name and it may vary by language. @@ -36,7 +36,7 @@ namespace Model { """) @route("/request-body") @put - op spreadModelAsRequestBody(...BodyParameter): NoContentResponse; + op spreadAsRequestBody(...BodyParameter): NoContentResponse; } @route("/alias") diff --git a/packages/cadl-ranch-specs/http/spread/mockapi.ts b/packages/cadl-ranch-specs/http/parameters/spread/mockapi.ts similarity index 56% rename from packages/cadl-ranch-specs/http/spread/mockapi.ts rename to packages/cadl-ranch-specs/http/parameters/spread/mockapi.ts index aff951d5e..ac5f417f0 100644 --- a/packages/cadl-ranch-specs/http/spread/mockapi.ts +++ b/packages/cadl-ranch-specs/http/parameters/spread/mockapi.ts @@ -3,30 +3,30 @@ import { ScenarioMockApi } from "@azure-tools/cadl-ranch-api"; export const Scenarios: Record = {}; -Scenarios.Spread_Model_spreadAsRequestBody = passOnSuccess( - mockapi.put("/spread/model/request-body", (req) => { +Scenarios.Parameters_Spread_Model_spreadAsRequestBody = passOnSuccess( + mockapi.put("/parameters/spread/model/request-body", (req) => { req.expect.bodyEquals({ name: "foo" }); return { status: 204 }; }), ); -Scenarios.Spread_Alias_spreadAsRequestBody = passOnSuccess( - mockapi.put("/spread/alias/request-body", (req) => { +Scenarios.Parameters_Spread_Alias_spreadAsRequestBody = passOnSuccess( + mockapi.put("/parameters/spread/alias/request-body", (req) => { req.expect.bodyEquals({ name: "foo" }); return { status: 204 }; }), ); -Scenarios.Spread_Alias_spreadAsRequestParameter = passOnSuccess( - mockapi.put("/spread/alias/request-parameter/1", (req) => { +Scenarios.Parameters_Spread_Alias_spreadAsRequestParameter = passOnSuccess( + mockapi.put("/parameters/spread/alias/request-parameter/1", (req) => { req.expect.containsHeader("x-ms-test-header", "bar"); req.expect.bodyEquals({ name: "foo" }); return { status: 204 }; }), ); -Scenarios.Spread_Alias_spreadWithMultipleParameters = passOnSuccess( - mockapi.put("/spread/alias/multiple-parameters/1", (req) => { +Scenarios.Parameters_Spread_Alias_spreadWithMultipleParameters = passOnSuccess( + mockapi.put("/parameters/spread/alias/multiple-parameters/1", (req) => { req.expect.containsHeader("x-ms-test-header", "bar"); req.expect.bodyEquals({ prop1: "foo1",