Skip to content

Commit 1acf690

Browse files
committed
new example
1 parent aeab902 commit 1acf690

File tree

3 files changed

+51
-31
lines changed

3 files changed

+51
-31
lines changed

packages/models-library/src/models_library/api_schemas_webserver/licensed_items.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class LicensedItemRpcGet(BaseModel):
2626
pricing_plan_id: PricingPlanId
2727
created_at: datetime
2828
modified_at: datetime
29+
2930
model_config = ConfigDict(
3031
json_schema_extra={
3132
"examples": [
@@ -76,21 +77,33 @@ class LicensedItemRestGet(OutputSchema):
7677
created_at: datetime
7778
modified_at: datetime
7879

79-
model_config = ConfigDict(
80-
json_schema_extra={
81-
"examples": [
82-
{
83-
"licensed_item_id": "0362b88b-91f8-4b41-867c-35544ad1f7a1",
84-
"display_name": "best-model",
85-
"licensed_resource_type": f"{LicensedResourceType.VIP_MODEL}",
86-
"licensed_resource_data": cast(JsonDict, VIP_DETAILS_EXAMPLE),
87-
"pricing_plan_id": "15",
88-
"created_at": "2024-12-12 09:59:26.422140",
89-
"modified_at": "2024-12-12 09:59:26.422140",
90-
}
91-
]
92-
}
93-
)
80+
@staticmethod
81+
def _update_json_schema_extra(schema: JsonDict) -> None:
82+
schema.update(
83+
{
84+
"examples": [
85+
{
86+
"licensedItemId": "0362b88b-91f8-4b41-867c-35544ad1f7a1",
87+
"displayName": "my best model",
88+
"licensedResourceName": "best-model",
89+
"licensedResourceType": f"{LicensedResourceType.VIP_MODEL}",
90+
"licensedResourceData": cast(
91+
JsonDict,
92+
{
93+
"categoryId": "HumanWholeBody",
94+
"categoryDisplay": "Humans",
95+
"source": VIP_DETAILS_EXAMPLE,
96+
},
97+
),
98+
"pricingPlanId": "15",
99+
"createdAt": "2024-12-12 09:59:26.422140",
100+
"modifiedAt": "2024-12-12 09:59:26.422140",
101+
}
102+
]
103+
}
104+
)
105+
106+
model_config = ConfigDict(json_schema_extra=_update_json_schema_extra)
94107

95108
@classmethod
96109
def from_domain_model(cls, item: LicensedItem) -> Self:

packages/models-library/src/models_library/licenses.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class LicensedResourceType(StrAutoEnum):
2626
"age": "34 years",
2727
"weight": "70.2 Kg",
2828
"height": "1.77 m",
29-
"data": "2015-03-01",
29+
"date": "2015-03-01",
3030
"ethnicity": "Caucasian",
3131
"functionality": "Static",
3232
"additional_field": "allowed",
@@ -55,7 +55,7 @@ class FeaturesDict(TypedDict):
5555
"license_version": "custom value",
5656
"protection": "custom value",
5757
"available_from_url": "custom value",
58-
"additional_field": "allowed",
58+
"additional_field": "trimmed if rest",
5959
}
6060

6161

services/web/server/tests/unit/with_dbs/04/licenses/test_licensed_items_rest.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,13 @@ async def test_licensed_items_listing(
4646
licensed_resource_name="Model A",
4747
licensed_resource_type=LicensedResourceType.VIP_MODEL,
4848
pricing_plan_id=pricing_plan_id,
49-
licensed_resource_data=VIP_DETAILS_EXAMPLE,
49+
licensed_resource_data={
50+
"categoryId": "HumanWholeBody",
51+
"categoryDisplay": "Humans",
52+
"source": VIP_DETAILS_EXAMPLE,
53+
},
5054
)
55+
5156
_licensed_item_id = licensed_item_db.licensed_item_id
5257

5358
# list
@@ -56,12 +61,14 @@ async def test_licensed_items_listing(
5661
data, _ = await assert_status(resp, status.HTTP_200_OK)
5762
assert len(data) == 1
5863
assert LicensedItemRestGet(**data[0])
59-
assert data[0]["licensedResourceData"][
60-
"additionalField"
61-
] # <-- Testing nested camel case
62-
assert data[0]["licensedResourceData"]["features"][
63-
"additionalField"
64-
] # <-- Testing nested camel case
64+
65+
# <-- Testing nested camel case
66+
source = data[0]["licensedResourceData"]["source"]
67+
assert source["license"]
68+
69+
# Testing trimmed
70+
assert "additionalField" not in source["features"]
71+
assert "additional_field" not in source["features"]
6572

6673
# get
6774
url = client.app.router["get_licensed_item"].url_for(
@@ -77,17 +84,13 @@ def mock_licensed_items_purchase_functions(mocker: MockerFixture) -> tuple:
7784
mock_wallet_credits = mocker.patch(
7885
"simcore_service_webserver.licenses._licensed_items_service.get_wallet_with_available_credits_by_user_and_wallet",
7986
spec=True,
80-
return_value=WalletGetWithAvailableCredits.model_validate(
81-
WalletGetWithAvailableCredits.model_config["json_schema_extra"]["examples"][
82-
0
83-
]
84-
),
87+
return_value=WalletGetWithAvailableCredits.model_json_schema()["examples"][0],
8588
)
8689
mock_get_pricing_unit = mocker.patch(
8790
"simcore_service_webserver.licenses._licensed_items_service.get_pricing_plan_unit",
8891
spec=True,
8992
return_value=PricingUnitGet.model_validate(
90-
PricingUnitGet.model_config["json_schema_extra"]["examples"][0]
93+
PricingUnitGet.model_json_schema()["examples"][0]
9194
),
9295
)
9396
mock_create_licensed_item_purchase = mocker.patch(
@@ -121,7 +124,11 @@ async def test_licensed_items_purchase(
121124
licensed_resource_name="Model A",
122125
licensed_resource_type=LicensedResourceType.VIP_MODEL,
123126
pricing_plan_id=pricing_plan_id,
124-
licensed_resource_data=VIP_DETAILS_EXAMPLE,
127+
licensed_resource_data={
128+
"categoryId": "HumanWholeBody",
129+
"categoryDisplay": "Humans",
130+
"source": VIP_DETAILS_EXAMPLE,
131+
},
125132
)
126133
_licensed_item_id = licensed_item_db.licensed_item_id
127134

0 commit comments

Comments
 (0)