Skip to content

Commit b54dd6e

Browse files
author
Robert Segal
committed
Added units of measure endpoints
1 parent edc316e commit b54dd6e

5 files changed

Lines changed: 91 additions & 0 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,6 @@ cython_debug/
167167
# ruff cache
168168
.ruff_cache
169169
.idea
170+
171+
172+
.devcontainer/

mpt_api_client/resources/catalog/catalog.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
PriceListsService,
1111
)
1212
from mpt_api_client.resources.catalog.products import AsyncProductsService, ProductsService
13+
from mpt_api_client.resources.catalog.units_of_measure import (
14+
AsyncUnitsOfMeasureService,
15+
UnitsOfMeasureService,
16+
)
1317

1418

1519
class Catalog:
@@ -38,6 +42,11 @@ def products(self) -> ProductsService:
3842
"""Products service."""
3943
return ProductsService(http_client=self.http_client)
4044

45+
@property
46+
def units_of_measure(self) -> UnitsOfMeasureService:
47+
"""Units of Measure service."""
48+
return UnitsOfMeasureService(http_client=self.http_client)
49+
4150
@property
4251
def items(self) -> ItemsService: # noqa: WPS110
4352
"""Items service."""
@@ -70,6 +79,11 @@ def products(self) -> AsyncProductsService:
7079
"""Products service."""
7180
return AsyncProductsService(http_client=self.http_client)
7281

82+
@property
83+
def units_of_measure(self) -> AsyncUnitsOfMeasureService:
84+
"""Units of Measure service."""
85+
return AsyncUnitsOfMeasureService(http_client=self.http_client)
86+
7387
@property
7488
def items(self) -> AsyncItemsService: # noqa: WPS110
7589
"""Items service."""
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from mpt_api_client.http import AsyncService, Service
2+
from mpt_api_client.http.mixins import (
3+
AsyncCreateMixin,
4+
AsyncDeleteMixin,
5+
AsyncUpdateMixin,
6+
CreateMixin,
7+
DeleteMixin,
8+
UpdateMixin,
9+
)
10+
from mpt_api_client.models import Model
11+
12+
13+
class UnitOfMeasure(Model):
14+
"""Unit of Measure resource."""
15+
16+
17+
class UnitsOfMeasureServiceConfig:
18+
"""Units of Measure service configuration."""
19+
20+
_endpoint = "/public/v1/catalog/units-of-measure"
21+
_model_class = UnitOfMeasure
22+
_collection_key = "data"
23+
24+
25+
class UnitsOfMeasureService(
26+
CreateMixin[UnitOfMeasure],
27+
DeleteMixin,
28+
UpdateMixin[UnitOfMeasure],
29+
Service[UnitOfMeasure],
30+
UnitsOfMeasureServiceConfig,
31+
):
32+
"""Units of Measure service."""
33+
34+
35+
class AsyncUnitsOfMeasureService(
36+
AsyncCreateMixin[UnitOfMeasure],
37+
AsyncDeleteMixin,
38+
AsyncUpdateMixin[UnitOfMeasure],
39+
AsyncService[UnitOfMeasure],
40+
UnitsOfMeasureServiceConfig,
41+
):
42+
"""Units of Measure service."""

tests/resources/catalog/test_catalog.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
PriceListsService,
1313
)
1414
from mpt_api_client.resources.catalog.products import AsyncProductsService, ProductsService
15+
from mpt_api_client.resources.catalog.units_of_measure import (
16+
AsyncUnitsOfMeasureService,
17+
UnitsOfMeasureService,
18+
)
1519

1620

1721
@pytest.fixture
@@ -31,6 +35,7 @@ def async_catalog(async_http_client):
3135
("listings", ListingsService),
3236
("price_lists", PriceListsService),
3337
("products", ProductsService),
38+
("units_of_measure", UnitsOfMeasureService),
3439
("items", ItemsService),
3540
],
3641
)
@@ -49,6 +54,7 @@ def test_catalog_properties(catalog, property_name, expected_service_class):
4954
("listings", AsyncListingsService),
5055
("price_lists", AsyncPriceListsService),
5156
("products", AsyncProductsService),
57+
("units_of_measure", AsyncUnitsOfMeasureService),
5258
("items", AsyncItemsService),
5359
],
5460
)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import pytest
2+
3+
from mpt_api_client.resources.catalog.units_of_measure import (
4+
AsyncUnitsOfMeasureService,
5+
UnitsOfMeasureService,
6+
)
7+
8+
9+
@pytest.fixture
10+
def units_of_measure_service(http_client):
11+
return UnitsOfMeasureService(http_client=http_client)
12+
13+
14+
@pytest.fixture
15+
def async_units_of_measure_service(async_http_client):
16+
return AsyncUnitsOfMeasureService(http_client=async_http_client)
17+
18+
19+
@pytest.mark.parametrize("method", ["get", "create", "update", "delete"])
20+
def test_mixins_present(units_of_measure_service, method):
21+
assert hasattr(units_of_measure_service, method)
22+
23+
24+
@pytest.mark.parametrize("method", ["get", "create", "update", "delete"])
25+
def test_async_mixins_present(async_units_of_measure_service, method):
26+
assert hasattr(async_units_of_measure_service, method)

0 commit comments

Comments
 (0)