Skip to content

Commit 53d5a38

Browse files
committed
refactor: fixes after base client split
1 parent 3c40980 commit 53d5a38

File tree

4 files changed

+46
-34
lines changed

4 files changed

+46
-34
lines changed

hcloud/_client.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,15 @@ def __init__(
167167
poll_max_retries=poll_max_retries,
168168
timeout=timeout,
169169
)
170+
self._client_hetzner = ClientBase(
171+
token=token,
172+
endpoint=api_endpoint_hetzner,
173+
application_name=application_name,
174+
application_version=application_version,
175+
poll_interval=poll_interval,
176+
poll_max_retries=poll_max_retries,
177+
timeout=timeout,
178+
)
170179

171180
self.datacenters = DatacentersClient(self)
172181
"""DatacentersClient Instance

hcloud/storage_box_types/client.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ class StorageBoxTypesClient(ResourceClientBase):
2727
See https://docs.hetzner.cloud/reference/hetzner#storage-box-types.
2828
"""
2929

30-
_client: Client
30+
def __init__(self, client: Client):
31+
super().__init__(client)
32+
self._client = client._client_hetzner
3133

3234
def get_by_id(self, id: int) -> BoundStorageBoxType:
3335
"""
@@ -37,7 +39,7 @@ def get_by_id(self, id: int) -> BoundStorageBoxType:
3739
3840
:param id: ID of the Storage Box Type.
3941
"""
40-
response = self._client._request_hetzner( # pylint: disable=protected-access
42+
response = self._client.request(
4143
method="GET",
4244
url=f"/storage_box_types/{id}",
4345
)
@@ -76,7 +78,7 @@ def get_list(
7678
if per_page is not None:
7779
params["per_page"] = per_page
7880

79-
response = self._client._request_hetzner( # pylint: disable=protected-access
81+
response = self._client.request(
8082
method="GET",
8183
url="/storage_box_types",
8284
params=params,

tests/unit/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def client(request_mock) -> Client:
2929
poll_max_retries=3,
3030
)
3131
c._client.request = request_mock
32+
c._client_hetzner.request = request_mock
3233
return c
3334

3435

tests/unit/storage_box_types/test_client.py

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import pytest
88
from dateutil.parser import isoparse
99

10+
from hcloud import Client
1011
from hcloud.storage_box_types import (
1112
BoundStorageBoxType,
1213
StorageBoxTypesClient,
@@ -23,29 +24,27 @@ def assert_bound_model(
2324
assert o.name == "bx11"
2425

2526

26-
@pytest.fixture(name="client")
27-
def client_fixture() -> StorageBoxTypesClient:
28-
return StorageBoxTypesClient(client=mock.MagicMock())
29-
30-
3127
class TestClient:
28+
@pytest.fixture()
29+
def resource_client(self, client: Client) -> StorageBoxTypesClient:
30+
return StorageBoxTypesClient(client)
31+
3232
def test_get_by_id(
3333
self,
34-
client: StorageBoxTypesClient,
34+
request_mock: mock.MagicMock,
35+
resource_client: StorageBoxTypesClient,
3536
storage_box_type1,
3637
):
37-
client._client._request_hetzner.return_value = {
38-
"storage_box_type": storage_box_type1
39-
}
38+
request_mock.return_value = {"storage_box_type": storage_box_type1}
4039

41-
result = client.get_by_id(42)
40+
result = resource_client.get_by_id(42)
4241

43-
client._client._request_hetzner.assert_called_with(
42+
request_mock.assert_called_with(
4443
method="GET",
4544
url="/storage_box_types/42",
4645
)
4746

48-
assert_bound_model(result, client)
47+
assert_bound_model(result, resource_client)
4948
assert result.description == "BX11"
5049
assert result.snapshot_limit == 10
5150
assert result.automatic_snapshot_limit == 10
@@ -73,18 +72,19 @@ def test_get_by_id(
7372
)
7473
def test_get_list(
7574
self,
76-
client: StorageBoxTypesClient,
75+
request_mock: mock.MagicMock,
76+
resource_client: StorageBoxTypesClient,
7777
storage_box_type1,
7878
storage_box_type2,
7979
params,
8080
):
81-
client._client._request_hetzner.return_value = {
81+
request_mock.return_value = {
8282
"storage_box_types": [storage_box_type1, storage_box_type2]
8383
}
8484

85-
result = client.get_list(**params)
85+
result = resource_client.get_list(**params)
8686

87-
client._client._request_hetzner.assert_called_with(
87+
request_mock.assert_called_with(
8888
url="/storage_box_types",
8989
method="GET",
9090
params=params,
@@ -96,11 +96,11 @@ def test_get_list(
9696
result1 = result.storage_box_types[0]
9797
result2 = result.storage_box_types[1]
9898

99-
assert result1._client is client
99+
assert result1._client is resource_client
100100
assert result1.id == 42
101101
assert result1.name == "bx11"
102102

103-
assert result2._client is client
103+
assert result2._client is resource_client
104104
assert result2.id == 43
105105
assert result2.name == "bx21"
106106

@@ -113,18 +113,19 @@ def test_get_list(
113113
)
114114
def test_get_all(
115115
self,
116-
client: StorageBoxTypesClient,
116+
request_mock: mock.MagicMock,
117+
resource_client: StorageBoxTypesClient,
117118
storage_box_type1,
118119
storage_box_type2,
119120
params,
120121
):
121-
client._client._request_hetzner.return_value = {
122+
request_mock.return_value = {
122123
"storage_box_types": [storage_box_type1, storage_box_type2]
123124
}
124125

125-
result = client.get_all(**params)
126+
result = resource_client.get_all(**params)
126127

127-
client._client._request_hetzner.assert_called_with(
128+
request_mock.assert_called_with(
128129
url="/storage_box_types",
129130
method="GET",
130131
params={**params, "page": 1, "per_page": 50},
@@ -135,31 +136,30 @@ def test_get_all(
135136
result1 = result[0]
136137
result2 = result[1]
137138

138-
assert result1._client is client
139+
assert result1._client is resource_client
139140
assert result1.id == 42
140141
assert result1.name == "bx11"
141142

142-
assert result2._client is client
143+
assert result2._client is resource_client
143144
assert result2.id == 43
144145
assert result2.name == "bx21"
145146

146147
def test_get_by_name(
147148
self,
148-
client: StorageBoxTypesClient,
149+
request_mock: mock.MagicMock,
150+
resource_client: StorageBoxTypesClient,
149151
storage_box_type1,
150152
):
151-
client._client._request_hetzner.return_value = {
152-
"storage_box_types": [storage_box_type1]
153-
}
153+
request_mock.return_value = {"storage_box_types": [storage_box_type1]}
154154

155-
result = client.get_by_name("bx11")
155+
result = resource_client.get_by_name("bx11")
156156

157157
params = {"name": "bx11"}
158158

159-
client._client._request_hetzner.assert_called_with(
159+
request_mock.assert_called_with(
160160
method="GET",
161161
url="/storage_box_types",
162162
params=params,
163163
)
164164

165-
assert_bound_model(result, client)
165+
assert_bound_model(result, resource_client)

0 commit comments

Comments
 (0)