Skip to content

Commit 42a328a

Browse files
authored
[python] add test case (#3241)
* Update dependencies * Add changelog .chronus/changes/auto-microsoft-previewApiversion-python-2025-9-13-7-59-10.md * Update dependencies (2025-10-14 02:32:19) * Regenerate for typespec-python (2025-10-14 02:37:25) * add test case --------- Co-authored-by: AutoPrFromHttpClientPython <AutoPrFromHttpClientPython>
1 parent bd6e23c commit 42a328a

15 files changed

Lines changed: 203 additions & 31 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
changeKind: internal
3+
packages:
4+
- "@autorest/python"
5+
- "@azure-tools/typespec-python"
6+
---
7+
8+
Add test case

packages/autorest.python/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
},
3030
"homepage": "https://github.com/Azure/autorest.python/blob/main/README.md",
3131
"dependencies": {
32-
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0NTY0Ni9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
32+
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0ODI4Ny9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
3333
"@autorest/system-requirements": "~1.0.2",
3434
"fs-extra": "~11.2.0",
3535
"tsx": "~4.19.1"

packages/typespec-python/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"js-yaml": "~4.1.0",
6868
"semver": "~7.6.2",
6969
"tsx": "~4.19.1",
70-
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0NTY0Ni9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
70+
"@typespec/http-client-python": "https://artprodcus3.artifacts.visualstudio.com/A0fb41ef4-5012-48a9-bf39-4ee3de03ee35/29ec6040-b234-4e31-b139-33dc4287b756/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2F6dXJlLXNkay9wcm9qZWN0SWQvMjllYzYwNDAtYjIzNC00ZTMxLWIxMzktMzNkYzQyODdiNzU2L2J1aWxkSWQvNTQ0ODI4Ny9hcnRpZmFjdE5hbWUvYnVpbGRfYXJ0aWZhY3RzX3B5dGhvbg2/content?format=file&subPath=%2Fpackages%2Ftypespec-http-client-python-0.19.1.tgz",
7171
"fs-extra": "~11.2.0"
7272
},
7373
"devDependencies": {
@@ -86,7 +86,7 @@
8686
"@azure-tools/typespec-azure-rulesets": "~0.61.0",
8787
"@azure-tools/typespec-autorest": "~0.61.0",
8888
"@azure-tools/typespec-client-generator-core": "~0.61.0",
89-
"@azure-tools/azure-http-specs": "0.1.0-alpha.30",
89+
"@azure-tools/azure-http-specs": "0.1.0-alpha.31",
9090
"@typespec/http-specs": "0.1.0-alpha.27",
9191
"@typespec/spector": "0.1.0-alpha.19",
9292
"@typespec/spec-api": "0.1.0-alpha.9",

packages/typespec-python/test/azure/generated/azure-versioning-previewversion/specs/azure/versioning/previewversion/_client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@
1919
from ._utils.serialization import Deserializer, Serializer
2020

2121

22-
class PreviewVersionClient(_PreviewVersionClientOperationsMixin): # pylint: disable=client-accepts-api-version-keyword
22+
class PreviewVersionClient(_PreviewVersionClientOperationsMixin):
2323
"""PreviewVersionClient.
2424
2525
:keyword endpoint: Service host. Default value is "http://localhost:3000".
2626
:paramtype endpoint: str
27+
:keyword api_version: The API version to use for this operation. Default value is
28+
"2024-12-01-preview". Note that overriding this default value may result in unsupported
29+
behavior.
30+
:paramtype api_version: str
2731
"""
2832

2933
def __init__( # pylint: disable=missing-client-constructor-parameter-credential

packages/typespec-python/test/azure/generated/azure-versioning-previewversion/specs/azure/versioning/previewversion/_configuration.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ class PreviewVersionClientConfiguration: # pylint: disable=too-many-instance-at
2121
2222
:param endpoint: Service host. Default value is "http://localhost:3000".
2323
:type endpoint: str
24+
:keyword api_version: The API version to use for this operation. Default value is
25+
"2024-12-01-preview". Note that overriding this default value may result in unsupported
26+
behavior.
27+
:paramtype api_version: str
2428
"""
2529

2630
def __init__(self, endpoint: str = "http://localhost:3000", **kwargs: Any) -> None:
31+
api_version: str = kwargs.pop("api_version", "2024-12-01-preview")
2732

2833
self.endpoint = endpoint
34+
self.api_version = api_version
2935
kwargs.setdefault("sdk_moniker", "specs-azure-versioning-previewversion/{}".format(VERSION))
3036
self.polling_interval = kwargs.get("polling_interval", 30)
3137
self._configure(**kwargs)

packages/typespec-python/test/azure/generated/azure-versioning-previewversion/specs/azure/versioning/previewversion/_operations/_operations.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@
4343

4444
def build_preview_version_get_widget_request(id: str, **kwargs: Any) -> HttpRequest:
4545
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
46+
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
4647

48+
api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-12-01-preview"))
4749
accept = _headers.pop("Accept", "application/json")
4850

4951
# Construct URL
@@ -54,18 +56,23 @@ def build_preview_version_get_widget_request(id: str, **kwargs: Any) -> HttpRequ
5456

5557
_url: str = _url.format(**path_format_arguments) # type: ignore
5658

59+
# Construct parameters
60+
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
61+
5762
# Construct headers
5863
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
5964

60-
return HttpRequest(method="GET", url=_url, headers=_headers, **kwargs)
65+
return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
6166

6267

6368
def build_preview_version_update_widget_color_request( # pylint: disable=name-too-long
6469
id: str, **kwargs: Any
6570
) -> HttpRequest:
6671
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
72+
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
6773

6874
content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
75+
api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-12-01-preview"))
6976
accept = _headers.pop("Accept", "application/json")
7077

7178
# Construct URL
@@ -76,12 +83,15 @@ def build_preview_version_update_widget_color_request( # pylint: disable=name-t
7683

7784
_url: str = _url.format(**path_format_arguments) # type: ignore
7885

86+
# Construct parameters
87+
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
88+
7989
# Construct headers
8090
if content_type is not None:
8191
_headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
8292
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
8393

84-
return HttpRequest(method="PATCH", url=_url, headers=_headers, **kwargs)
94+
return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs)
8595

8696

8797
def build_preview_version_list_widgets_request( # pylint: disable=name-too-long
@@ -90,6 +100,7 @@ def build_preview_version_list_widgets_request( # pylint: disable=name-too-long
90100
_headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
91101
_params = case_insensitive_dict(kwargs.pop("params", {}) or {})
92102

103+
api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-12-01-preview"))
93104
accept = _headers.pop("Accept", "application/json")
94105

95106
# Construct URL
@@ -100,6 +111,7 @@ def build_preview_version_list_widgets_request( # pylint: disable=name-too-long
100111
_params["name"] = _SERIALIZER.query("name", name, "str")
101112
if color is not None:
102113
_params["color"] = _SERIALIZER.query("color", color, "str")
114+
_params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")
103115

104116
# Construct headers
105117
_headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
@@ -136,6 +148,7 @@ def get_widget(self, id: str, **kwargs: Any) -> Optional[_models.Widget]:
136148

137149
_request = build_preview_version_get_widget_request(
138150
id=id,
151+
api_version=self._config.api_version,
139152
headers=_headers,
140153
params=_params,
141154
)
@@ -234,7 +247,7 @@ def update_widget_color(
234247
@distributed_trace
235248
@api_version_validation(
236249
method_added_on="2024-12-01-preview",
237-
params_added_on={"2024-12-01-preview": ["id", "content_type", "accept"]},
250+
params_added_on={"2024-12-01-preview": ["id", "content_type", "api_version", "accept"]},
238251
api_versions_list=["2024-12-01-preview"],
239252
)
240253
def update_widget_color(
@@ -276,6 +289,7 @@ def update_widget_color(
276289
_request = build_preview_version_update_widget_color_request(
277290
id=id,
278291
content_type=content_type,
292+
api_version=self._config.api_version,
279293
content=_content,
280294
headers=_headers,
281295
params=_params,
@@ -347,6 +361,7 @@ def list_widgets(
347361
_request = build_preview_version_list_widgets_request(
348362
name=name,
349363
color=color,
364+
api_version=self._config.api_version,
350365
headers=_headers,
351366
params=_params,
352367
)

packages/typespec-python/test/azure/generated/azure-versioning-previewversion/specs/azure/versioning/previewversion/aio/_client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@
1919
from ._operations import _PreviewVersionClientOperationsMixin
2020

2121

22-
class PreviewVersionClient(_PreviewVersionClientOperationsMixin): # pylint: disable=client-accepts-api-version-keyword
22+
class PreviewVersionClient(_PreviewVersionClientOperationsMixin):
2323
"""PreviewVersionClient.
2424
2525
:keyword endpoint: Service host. Default value is "http://localhost:3000".
2626
:paramtype endpoint: str
27+
:keyword api_version: The API version to use for this operation. Default value is
28+
"2024-12-01-preview". Note that overriding this default value may result in unsupported
29+
behavior.
30+
:paramtype api_version: str
2731
"""
2832

2933
def __init__( # pylint: disable=missing-client-constructor-parameter-credential

packages/typespec-python/test/azure/generated/azure-versioning-previewversion/specs/azure/versioning/previewversion/aio/_configuration.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ class PreviewVersionClientConfiguration: # pylint: disable=too-many-instance-at
2121
2222
:param endpoint: Service host. Default value is "http://localhost:3000".
2323
:type endpoint: str
24+
:keyword api_version: The API version to use for this operation. Default value is
25+
"2024-12-01-preview". Note that overriding this default value may result in unsupported
26+
behavior.
27+
:paramtype api_version: str
2428
"""
2529

2630
def __init__(self, endpoint: str = "http://localhost:3000", **kwargs: Any) -> None:
31+
api_version: str = kwargs.pop("api_version", "2024-12-01-preview")
2732

2833
self.endpoint = endpoint
34+
self.api_version = api_version
2935
kwargs.setdefault("sdk_moniker", "specs-azure-versioning-previewversion/{}".format(VERSION))
3036
self.polling_interval = kwargs.get("polling_interval", 30)
3137
self._configure(**kwargs)

packages/typespec-python/test/azure/generated/azure-versioning-previewversion/specs/azure/versioning/previewversion/aio/_operations/_operations.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ async def get_widget(self, id: str, **kwargs: Any) -> Optional[_models.Widget]:
7272

7373
_request = build_preview_version_get_widget_request(
7474
id=id,
75+
api_version=self._config.api_version,
7576
headers=_headers,
7677
params=_params,
7778
)
@@ -170,7 +171,7 @@ async def update_widget_color(
170171
@distributed_trace_async
171172
@api_version_validation(
172173
method_added_on="2024-12-01-preview",
173-
params_added_on={"2024-12-01-preview": ["id", "content_type", "accept"]},
174+
params_added_on={"2024-12-01-preview": ["id", "content_type", "api_version", "accept"]},
174175
api_versions_list=["2024-12-01-preview"],
175176
)
176177
async def update_widget_color(
@@ -212,6 +213,7 @@ async def update_widget_color(
212213
_request = build_preview_version_update_widget_color_request(
213214
id=id,
214215
content_type=content_type,
216+
api_version=self._config.api_version,
215217
content=_content,
216218
headers=_headers,
217219
params=_params,
@@ -283,6 +285,7 @@ async def list_widgets(
283285
_request = build_preview_version_list_widgets_request(
284286
name=name,
285287
color=color,
288+
api_version=self._config.api_version,
286289
headers=_headers,
287290
params=_params,
288291
)
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# -------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for
4+
# license information.
5+
# --------------------------------------------------------------------------
6+
import pytest
7+
from specs.azure.versioning.previewversion.aio import PreviewVersionClient
8+
from specs.azure.versioning.previewversion.models import UpdateWidgetColorRequest
9+
10+
11+
@pytest.fixture
12+
async def client():
13+
async with PreviewVersionClient() as client:
14+
yield client
15+
16+
17+
@pytest.fixture
18+
async def stable_client():
19+
async with PreviewVersionClient(api_version="2024-06-01") as client:
20+
yield client
21+
22+
23+
@pytest.mark.asyncio
24+
async def test_get_widget(client: PreviewVersionClient):
25+
result = await client.get_widget(id="widget-123")
26+
assert result.id == "widget-123"
27+
assert result.name == "Sample Widget"
28+
assert result.color == "blue"
29+
30+
31+
@pytest.mark.asyncio
32+
async def test_update_widget_color(client: PreviewVersionClient):
33+
color_update = UpdateWidgetColorRequest(color="red")
34+
result = await client.update_widget_color(id="widget-123", color_update=color_update)
35+
assert result.id == "widget-123"
36+
assert result.name == "Sample Widget"
37+
assert result.color == "red"
38+
39+
with pytest.raises(ValueError):
40+
async with PreviewVersionClient(api_version="2024-06-01") as stable_client:
41+
await stable_client.update_widget_color(id="widget-123", color_update=color_update)
42+
43+
44+
@pytest.mark.asyncio
45+
async def test_list_widgets(stable_client: PreviewVersionClient):
46+
result = await stable_client.list_widgets(name="test")
47+
assert len(result.widgets) == 1
48+
assert result.widgets[0].id == "widget-1"
49+
assert result.widgets[0].name == "test"
50+
51+
with pytest.raises(ValueError):
52+
async with PreviewVersionClient(api_version="2024-06-01") as client:
53+
await client.list_widgets(name="test", color="test")

0 commit comments

Comments
 (0)