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