Skip to content

Commit 94f0fed

Browse files
committed
tests pass
1 parent 06f0c11 commit 94f0fed

File tree

3 files changed

+41
-17
lines changed

3 files changed

+41
-17
lines changed

services/web/server/src/simcore_service_webserver/licenses/_licensed_items_service.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,29 +77,32 @@ async def register_resource_as_licensed_item(
7777
#
7878
# This approach not only reduces unnecessary error logs but also helps prevent race conditions
7979
# when multiple concurrent calls attempt to register the same resource.
80+
new_licensed_resource_data = licensed_resource_data.model_dump(
81+
mode="json", exclude_unset=True
82+
)
83+
8084
try:
8185
licensed_item = await _licensed_items_repository.get_by_resource_identifier(
8286
app,
8387
licensed_resource_name=licensed_resource_name,
8488
licensed_resource_type=licensed_resource_type,
8589
)
8690

87-
new_data = licensed_resource_data.model_dump(mode="json", exclude_unset=True)
88-
89-
if licensed_item.licensed_resource_data != new_data:
90-
differences = _compute_difference(
91-
licensed_item.licensed_resource_data or {},
92-
licensed_resource_data.model_dump(mode="json", exclude_unset=True),
93-
)
94-
msg = f"DIFFERENT RESOURCE: {licensed_resource_name}, {licensed_resource_type}. Difference:\n{pformat(differences)}"
91+
if licensed_item.licensed_resource_data != new_licensed_resource_data:
92+
# differences = _compute_difference(
93+
# licensed_item.licensed_resource_data or {},
94+
# new_licensed_resource_data,
95+
# )
96+
differences = "there are differences TMP"
97+
msg = f"DIFFERENT_RESOURCE: {licensed_resource_name}, {licensed_resource_type}. Difference:\n{pformat(differences)}"
9598
return RegistrationResult(
9699
licensed_item, RegistrationState.DIFFERENT_RESOURCE, msg
97100
)
98101

99102
return RegistrationResult(
100103
licensed_item,
101104
RegistrationState.ALREADY_REGISTERED,
102-
f"ALREADY REGISTERED: {licensed_resource_name}, {licensed_resource_type}",
105+
f"ALREADY_REGISTERED: {licensed_resource_name}, {licensed_resource_type}",
103106
)
104107

105108
except LicensedItemNotFoundError:
@@ -108,17 +111,15 @@ async def register_resource_as_licensed_item(
108111
display_name=licensed_item_display_name,
109112
licensed_resource_name=licensed_resource_name,
110113
licensed_resource_type=licensed_resource_type,
111-
licensed_resource_data=licensed_resource_data.model_dump(
112-
mode="json", exclude_unset=True
113-
),
114+
licensed_resource_data=new_licensed_resource_data,
114115
product_name=None,
115116
pricing_plan_id=None,
116117
)
117118

118119
return RegistrationResult(
119120
licensed_item,
120121
RegistrationState.NEWLY_REGISTERED,
121-
f"NEWLY REGISTERED: {licensed_resource_name}, {licensed_resource_type}",
122+
f"NEWLY_REGISTERED: {licensed_resource_name}, {licensed_resource_type}",
122123
)
123124

124125

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async def pricing_plan_id(
3333
)
3434
.returning(resource_tracker_pricing_plans.c.pricing_plan_id)
3535
)
36-
row = result.first()
36+
row = result.one()
3737

3838
assert row
3939

@@ -42,3 +42,17 @@ async def pricing_plan_id(
4242
async with transaction_context(get_asyncpg_engine(client.app)) as conn:
4343
await conn.execute(licensed_items.delete())
4444
await conn.execute(resource_tracker_pricing_plans.delete())
45+
46+
47+
@pytest.fixture
48+
async def ensure_empty_licensed_items(client: TestClient):
49+
async def _cleanup():
50+
assert client.app
51+
async with transaction_context(get_asyncpg_engine(client.app)) as conn:
52+
await conn.execute(licensed_items.delete())
53+
54+
await _cleanup()
55+
56+
yield
57+
58+
await _cleanup()

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ async def test_sync_itis_vip_as_licensed_items(
135135
mock_itis_vip_downloadables_api: respx.MockRouter,
136136
app_environment: EnvVarsDict,
137137
client: TestClient,
138+
ensure_empty_licensed_items: None,
138139
):
139140
assert client.app
140141

@@ -213,6 +214,7 @@ async def test_itis_vip_syncer_service(
213214
app_environment: EnvVarsDict,
214215
client: TestClient,
215216
caplog: pytest.LogCaptureFixture,
217+
ensure_empty_licensed_items: None,
216218
):
217219
assert client.app
218220

@@ -222,14 +224,20 @@ async def test_itis_vip_syncer_service(
222224
categories = settings.to_categories()
223225

224226
with caplog.at_level(logging.DEBUG, _itis_vip_syncer_service._logger.name):
225-
caplog.clear()
227+
228+
def _get_captured_levels():
229+
return [
230+
rc[1]
231+
for rc in caplog.record_tuples
232+
if rc[0] == _itis_vip_syncer_service._logger.name
233+
]
226234

227235
# one round
236+
caplog.clear()
228237
await _itis_vip_syncer_service.sync_resources_with_licensed_items(
229238
client.app, categories
230239
)
231-
232-
levels_logged = [o[1] for o in caplog.record_tuples]
240+
levels_logged = _get_captured_levels()
233241
assert logging.DEBUG not in levels_logged
234242
assert logging.INFO in levels_logged
235243
assert logging.WARNING not in levels_logged
@@ -240,6 +248,7 @@ async def test_itis_vip_syncer_service(
240248
client.app, categories
241249
)
242250

251+
levels_logged = _get_captured_levels()
243252
assert logging.DEBUG in levels_logged
244253
assert logging.INFO not in levels_logged
245254
assert logging.WARNING not in levels_logged

0 commit comments

Comments
 (0)