From acd4c881a0c32ea40c9409fc42f29cfff5bc4519 Mon Sep 17 00:00:00 2001 From: matusdrobuliak66 <drobuliak66@gmail.com> Date: Tue, 10 Dec 2024 11:37:40 +0100 Subject: [PATCH] RUT unit tests --- ...7_add_cols_to_licensed_items_purchases_.py | 4 +-- ...b_add_cols_to_licensed_items_purchases_.py | 28 +++++++++++++++++++ ...source_tracker_licensed_items_purchases.py | 2 +- .../modules/db/licensed_items_purchases_db.py | 4 +-- .../test_api_licensed_items_purchases.py | 22 +++++++++------ 5 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 packages/postgres-database/src/simcore_postgres_database/migration/versions/d68b8128c23b_add_cols_to_licensed_items_purchases_.py diff --git a/packages/postgres-database/src/simcore_postgres_database/migration/versions/8fa15c4c3977_add_cols_to_licensed_items_purchases_.py b/packages/postgres-database/src/simcore_postgres_database/migration/versions/8fa15c4c3977_add_cols_to_licensed_items_purchases_.py index 39f2ba32ea3..ee47dcb5d4a 100644 --- a/packages/postgres-database/src/simcore_postgres_database/migration/versions/8fa15c4c3977_add_cols_to_licensed_items_purchases_.py +++ b/packages/postgres-database/src/simcore_postgres_database/migration/versions/8fa15c4c3977_add_cols_to_licensed_items_purchases_.py @@ -1,7 +1,7 @@ """add cols to licensed_items_purchases table Revision ID: 8fa15c4c3977 -Revises: 38c9ac332c58 +Revises: 4d007819e61a Create Date: 2024-12-10 06:42:23.319239+00:00 """ @@ -10,7 +10,7 @@ # revision identifiers, used by Alembic. revision = "8fa15c4c3977" -down_revision = "38c9ac332c58" +down_revision = "4d007819e61a" branch_labels = None depends_on = None diff --git a/packages/postgres-database/src/simcore_postgres_database/migration/versions/d68b8128c23b_add_cols_to_licensed_items_purchases_.py b/packages/postgres-database/src/simcore_postgres_database/migration/versions/d68b8128c23b_add_cols_to_licensed_items_purchases_.py new file mode 100644 index 00000000000..da729aec544 --- /dev/null +++ b/packages/postgres-database/src/simcore_postgres_database/migration/versions/d68b8128c23b_add_cols_to_licensed_items_purchases_.py @@ -0,0 +1,28 @@ +"""add cols to licensed_items_purchases table 2 + +Revision ID: d68b8128c23b +Revises: 8fa15c4c3977 +Create Date: 2024-12-10 10:24:28.071216+00:00 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = "d68b8128c23b" +down_revision = "8fa15c4c3977" +branch_labels = None +depends_on = None + + +def upgrade(): + op.drop_column("resource_tracker_licensed_items_purchases", "licensed_item_id") + op.add_column( + "resource_tracker_licensed_items_purchases", + sa.Column("licensed_item_id", postgresql.UUID(as_uuid=True), nullable=False), + ) + + +def downgrade(): + ... diff --git a/packages/postgres-database/src/simcore_postgres_database/models/resource_tracker_licensed_items_purchases.py b/packages/postgres-database/src/simcore_postgres_database/models/resource_tracker_licensed_items_purchases.py index c5c3e2b57ec..bfcca3b52e8 100644 --- a/packages/postgres-database/src/simcore_postgres_database/models/resource_tracker_licensed_items_purchases.py +++ b/packages/postgres-database/src/simcore_postgres_database/models/resource_tracker_licensed_items_purchases.py @@ -26,7 +26,7 @@ ), sa.Column( "licensed_item_id", - sa.BigInteger, + UUID(as_uuid=True), nullable=False, ), sa.Column( diff --git a/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/modules/db/licensed_items_purchases_db.py b/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/modules/db/licensed_items_purchases_db.py index e507da9f7e2..67950b7b73d 100644 --- a/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/modules/db/licensed_items_purchases_db.py +++ b/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/modules/db/licensed_items_purchases_db.py @@ -49,7 +49,7 @@ async def create( data: CreateLicensedItemsPurchasesDB, ) -> LicensedItemsPurchasesDB: async with transaction_context(engine, connection) as conn: - result = await conn.stream( + result = await conn.execute( resource_tracker_licensed_items_purchases.insert() .values( product_name=data.product_name, @@ -67,7 +67,7 @@ async def create( ) .returning(*_SELECTION_ARGS) ) - row = await result.first() + row = result.first() return LicensedItemsPurchasesDB.model_validate(row) diff --git a/services/resource-usage-tracker/tests/unit/with_dbs/test_api_licensed_items_purchases.py b/services/resource-usage-tracker/tests/unit/with_dbs/test_api_licensed_items_purchases.py index 915b86db7c2..aaf235351c3 100644 --- a/services/resource-usage-tracker/tests/unit/with_dbs/test_api_licensed_items_purchases.py +++ b/services/resource-usage-tracker/tests/unit/with_dbs/test_api_licensed_items_purchases.py @@ -3,7 +3,7 @@ # pylint:disable=redefined-outer-name # pylint:disable=too-many-arguments -from datetime import datetime, timezone +from datetime import UTC, datetime from decimal import Decimal # # Remove the environment variable @@ -12,6 +12,7 @@ import sqlalchemy as sa from models_library.api_schemas_resource_usage_tracker.licensed_items_purchases import ( LicensedItemPurchaseGet, + LicensedItemsPurchasesPage, ) from models_library.resource_tracker_licensed_items_purchases import ( LicensedItemsPurchasesCreate, @@ -73,7 +74,9 @@ async def test_rpc_licensed_items_purchases_workflow( result = await licensed_items_purchases.get_licensed_items_purchases_page( rpc_client, product_name="osparc", wallet_id=1 ) - assert isinstance(result, list) # nosec + assert isinstance(result, LicensedItemsPurchasesPage) # nosec + assert result.items == [] + assert result.total == 0 _create_data = LicensedItemsPurchasesCreate( product_name="osparc", @@ -82,14 +85,14 @@ async def test_rpc_licensed_items_purchases_workflow( wallet_name="My Wallet", pricing_unit_cost_id=1, pricing_unit_cost=Decimal(10), - start_at=datetime.now(tz=timezone.utc), - expire_at=datetime.now(tz=timezone.utc), + start_at=datetime.now(tz=UTC), + expire_at=datetime.now(tz=UTC), num_of_seats=1, purchased_by_user=1, - purchased_at=datetime.now(tz=timezone.utc), + purchased_at=datetime.now(tz=UTC), ) - result = await licensed_items_purchases.create_licensed_item_purchase( + created_item = await licensed_items_purchases.create_licensed_item_purchase( rpc_client, data=_create_data ) assert isinstance(result, LicensedItemPurchaseGet) # nosec @@ -97,11 +100,14 @@ async def test_rpc_licensed_items_purchases_workflow( result = await licensed_items_purchases.get_licensed_item_purchase( rpc_client, product_name="osparc", - licensed_item_purchase_id=result.licensed_item_purchase_id, + licensed_item_purchase_id=created_item.licensed_item_purchase_id, ) assert isinstance(result, LicensedItemPurchaseGet) # nosec + assert result.licensed_item_purchase_id == created_item.licensed_item_purchase_id result = await licensed_items_purchases.get_licensed_items_purchases_page( rpc_client, product_name="osparc", wallet_id=_create_data.wallet_id ) - assert isinstance(result, list) # nosec + assert isinstance(result, LicensedItemsPurchasesPage) # nosec + assert len(result.items) == 1 + assert result.total == 1