Skip to content
This repository was archived by the owner on Jan 21, 2025. It is now read-only.

Fix Issue In current Versioning\Removed #736

Merged
merged 18 commits into from
Oct 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/witty-frogs-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@azure-tools/cadl-ranch-specs": patch
---

Fix Issue In Versioning\Removed.
43 changes: 43 additions & 0 deletions packages/cadl-ranch-specs/cadl-ranch-summary.md
Original file line number Diff line number Diff line change
Expand Up @@ -9108,6 +9108,49 @@ Expected request body:
{ "prop": "foo" }
```

### Versioning_Removed_modelV3

- Endpoint: `post /versioning/removed/api-version:{version}/v3`

path: "/versioning/removed/api-version[:]v1/v3"
Expected request body:

```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

Expected response body:

```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

path: "/versioning/removed/api-version[:]v2preview/v3"
Expected request body:

```json
{ "id": "123" }
```

Expected response body:

```json
{ "id": "123" }
```

path: "/versioning/removed/api-version[:]v2/v3"
Expected request body:

```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

Expected response body:

```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

### Versioning_Removed_v2

- Endpoint: `post /versioning/removed/api-version:{version}/v2`
Expand Down
70 changes: 67 additions & 3 deletions packages/cadl-ranch-specs/http/versioning/removed/main.tsp
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import "@typespec/http";
import "@azure-tools/cadl-ranch-expect";
import "@typespec/versioning";
import "@azure-tools/typespec-azure-core";

using TypeSpec.Http;
using TypeSpec.Versioning;
using TypeSpec.Rest;

/**
* Test for the `@removed` decorator.
Expand All @@ -20,7 +22,7 @@ using TypeSpec.Versioning;
endpoint: url,

/**
* Need to be set as 'v1' or 'v2' in client.
* Need to be set as 'v1', 'v2preview' or 'v2' in client.
*/
version: Versions,
}
Expand All @@ -32,12 +34,17 @@ namespace Versioning.Removed;
*/
enum Versions {
/**
* The version v1.
* The original version v1.
*/
v1: "v1",

/**
* The version v2.
* The V2 Preview version.
*/
v2preview: "v2preview",

/**
* The latest version v2.
*/
v2: "v2",
}
Expand Down Expand Up @@ -66,13 +73,29 @@ model ModelV2 {
unionProp: UnionV2;
}

model ModelV3 {
id: string;

@removed(Versions.v2preview)
@added(Versions.v2)
enumProp: EnumV3;
}

enum EnumV2 {
@removed(Versions.v2)
enumMemberV1,

enumMemberV2,
}

enum EnumV3 {
@removed(Versions.v2preview)
@added(Versions.v2)
enumMemberV1,

enumMemberV2Preview,
}

@removed(Versions.v2)
union UnionV1 {
string,
Expand Down Expand Up @@ -123,3 +146,44 @@ interface InterfaceV1 {
@route("/v1")
v1InInterface(@body body: ModelV1): ModelV1;
}

/** This operation will pass different paths and different request bodies based on different versions. */
@scenario
@scenarioDoc("""
path: "/versioning/removed/api-version[:]v1/v3"
Expected request body:
```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

Expected response body:
```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

path: "/versioning/removed/api-version[:]v2preview/v3"
Expected request body:
```json
{ "id": "123"}
```

Expected response body:
```json
{ "id": "123"}
```

path: "/versioning/removed/api-version[:]v2/v3"
Expected request body:
```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

Expected response body:
```json
{ "id": "123", "enumProp": "enumMemberV1" }
```

""")
@post
@route("/v3")
op modelV3(@body body: ModelV3): ModelV3;
47 changes: 47 additions & 0 deletions packages/cadl-ranch-specs/http/versioning/removed/mockapi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,50 @@ Scenarios.Versioning_Removed_v2 = passOnSuccess({
},
kind: "MockApiDefinition",
});

Scenarios.Versioning_Removed_modelV3 = passOnSuccess({
uri: `/versioning/removed/api-version[:]v1/v3`,
method: "post",
request: {
body: {
id: "123",
enumProp: "enumMemberV1",
},
},
response: {
status: 200,
body: json({ id: "123", enumProp: "enumMemberV1" }),
},
kind: "MockApiDefinition",
});

Scenarios.Versioning_Removed_modelV3_V2 = passOnSuccess({
uri: `/versioning/removed/api-version[:]v2/v3`,
method: "post",
request: {
body: {
id: "123",
enumProp: "enumMemberV1",
},
},
response: {
status: 200,
body: json({ id: "123", enumProp: "enumMemberV1" }),
},
kind: "MockApiDefinition",
});

Scenarios.Versioning_Removed_modelV3_V2preview = passOnSuccess({
uri: `/versioning/removed/api-version[:]v2preview/v3`,
method: "post",
request: {
body: {
id: "123",
},
},
response: {
status: 200,
body: json({ id: "123" }),
},
kind: "MockApiDefinition",
});
Loading