aboutsummaryrefslogtreecommitdiff
path: root/tests/incite/mergers/foundations
diff options
context:
space:
mode:
Diffstat (limited to 'tests/incite/mergers/foundations')
-rw-r--r--tests/incite/mergers/foundations/test_enriched_session.py76
-rw-r--r--tests/incite/mergers/foundations/test_enriched_task_adjust.py49
-rw-r--r--tests/incite/mergers/foundations/test_enriched_wall.py119
-rw-r--r--tests/incite/mergers/foundations/test_user_id_product.py47
4 files changed, 162 insertions, 129 deletions
diff --git a/tests/incite/mergers/foundations/test_enriched_session.py b/tests/incite/mergers/foundations/test_enriched_session.py
index 47f243e..71b2442 100644
--- a/tests/incite/mergers/foundations/test_enriched_session.py
+++ b/tests/incite/mergers/foundations/test_enriched_session.py
@@ -1,20 +1,35 @@
-from datetime import datetime, timedelta, timezone
+from __future__ import annotations
+
+from collections.abc import Callable
+from datetime import UTC, datetime, timedelta
from decimal import Decimal
from itertools import product
-from typing import Optional
+from typing import TYPE_CHECKING
import dask.dataframe as dd
import pandas as pd
import pytest
+from dask.distributed import Client as DaskClient
from generalresearch.incite.schemas.admin_responses import (
AdminPOPSessionSchema,
)
-from generalresearch.pg_helper import PostgresConfig
-from test_utils.incite.collections.conftest import (
- session_collection,
- wall_collection,
-)
+
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_session import (
+ EnrichedSessionMerge,
+ )
+ from generalresearch.models.admin.request import (
+ ReportRequest,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
@pytest.mark.parametrize(
@@ -30,17 +45,16 @@ class TestEnrichedSession:
def test_base(
self,
- client_no_amm,
- product,
- user_factory,
- wall_collection,
- session_collection,
- enriched_session_merge,
+ client_no_amm: DaskClient,
+ product: Product,
+ user_factory: Callable[..., User],
+ wall_collection: WallDFCollection,
+ session_collection: SessionDFCollection,
+ enriched_session_merge: EnrichedSessionMerge,
thl_web_rr: PostgresConfig,
- delete_df_collection,
- incite_item_factory,
+ delete_df_collection: Callable[..., None],
+ incite_item_factory: Callable[..., None],
):
- from generalresearch.models.thl.user import User
delete_df_collection(coll=session_collection)
@@ -77,31 +91,31 @@ class TestEnrichedSession:
class TestEnrichedSessionAdmin:
@pytest.fixture
- def start(self) -> "datetime":
- return datetime(year=2020, month=3, day=14, tzinfo=timezone.utc)
+ def start(self) -> datetime:
+ return datetime(year=2020, month=3, day=14, tzinfo=UTC)
@pytest.fixture
def offset(self) -> str:
return "1d"
@pytest.fixture
- def duration(self) -> Optional["timedelta"]:
+ def duration(self) -> timedelta | None:
return timedelta(days=5)
def test_to_admin_response(
self,
- event_report_request,
- enriched_session_merge,
- client_no_amm,
- wall_collection,
- session_collection,
+ event_report_request: ReportRequest,
+ enriched_session_merge: EnrichedSessionMerge,
+ client_no_amm: DaskClient,
+ wall_collection: WallDFCollection,
+ session_collection: SessionDFCollection,
thl_web_rr: PostgresConfig,
- session_report_request,
- user_factory,
- start,
- session_factory,
- product_factory,
- delete_df_collection,
+ session_report_request: ReportRequest,
+ user_factory: Callable[..., User],
+ start: datetime,
+ session_factory: Callable[..., Session],
+ product_factory: Callable[..., Product],
+ delete_df_collection: Callable[..., None],
):
delete_df_collection(coll=wall_collection)
delete_df_collection(coll=session_collection)
@@ -112,7 +126,7 @@ class TestEnrichedSessionAdmin:
for p in [p1, p2]:
u = user_factory(product=p)
for i in range(50):
- s = session_factory(
+ _ = session_factory(
user=u,
wall_count=1,
wall_req_cpi=Decimal("1.00"),
diff --git a/tests/incite/mergers/foundations/test_enriched_task_adjust.py b/tests/incite/mergers/foundations/test_enriched_task_adjust.py
index 96c214f..877d22f 100644
--- a/tests/incite/mergers/foundations/test_enriched_task_adjust.py
+++ b/tests/incite/mergers/foundations/test_enriched_task_adjust.py
@@ -1,16 +1,30 @@
+from __future__ import annotations
+
+from collections.abc import Callable
from datetime import timedelta
from itertools import product as iter_product
+from typing import TYPE_CHECKING
import dask.dataframe as dd
import pandas as pd
import pytest
+from dask.distributed import Client as DaskClient
-from test_utils.incite.collections.conftest import (
- wall_collection,
- task_adj_collection,
- session_collection,
-)
-from test_utils.incite.mergers.conftest import enriched_wall_merge
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ TaskAdjustmentDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_task_adjust import (
+ EnrichedTaskAdjustMerge,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_wall import (
+ EnrichedWallMerge,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
@pytest.mark.parametrize(
@@ -27,19 +41,18 @@ class TestEnrichedTaskAdjust:
@pytest.mark.skip
def test_base(
self,
- client_no_amm,
- user_factory,
- product,
- task_adj_collection,
- wall_collection,
- session_collection,
- enriched_wall_merge,
- enriched_task_adjust_merge,
- incite_item_factory,
- delete_df_collection,
- thl_web_rr,
+ client_no_amm: DaskClient,
+ user_factory: Callable[..., User],
+ product: Product,
+ task_adj_collection: TaskAdjustmentDFCollection,
+ wall_collection: WallDFCollection,
+ session_collection: SessionDFCollection,
+ enriched_wall_merge: EnrichedWallMerge,
+ enriched_task_adjust_merge: EnrichedTaskAdjustMerge,
+ incite_item_factory: Callable[..., None],
+ delete_df_collection: Callable[..., None],
+ thl_web_rr: PostgresConfig,
):
- from generalresearch.models.thl.user import User
# -- Build & Setup
delete_df_collection(coll=session_collection)
diff --git a/tests/incite/mergers/foundations/test_enriched_wall.py b/tests/incite/mergers/foundations/test_enriched_wall.py
index 8f4995b..2b9afb8 100644
--- a/tests/incite/mergers/foundations/test_enriched_wall.py
+++ b/tests/incite/mergers/foundations/test_enriched_wall.py
@@ -1,34 +1,33 @@
-from datetime import timedelta, timezone, datetime
+from collections.abc import Callable
+from datetime import UTC, datetime, timedelta
from decimal import Decimal
from itertools import product as iter_product
-from typing import Optional
+from typing import TYPE_CHECKING
import dask.dataframe as dd
import pandas as pd
import pytest
-
-# noinspection PyUnresolvedReferences
-from distributed.utils_test import (
- gen_cluster,
- client_no_amm,
- loop,
- loop_in_thread,
- cleanup,
- cluster_fixture,
- client,
-)
+from dask.distributed import Client as DaskClient
from generalresearch.incite.mergers.foundations.enriched_wall import (
EnrichedWallMergeItem,
)
-from test_utils.incite.collections.conftest import (
- session_collection,
- wall_collection,
-)
-from test_utils.incite.conftest import incite_item_factory
-from test_utils.incite.mergers.conftest import (
- enriched_wall_merge,
-)
+
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+
+ # noinspection PyUnresolvedReferences
+ from generalresearch.incite.mergers.foundations.enriched_wall import (
+ EnrichedWallMerge,
+ )
+ from generalresearch.models.admin.request import ReportRequest
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
@pytest.mark.parametrize(
@@ -39,17 +38,16 @@ class TestEnrichedWall:
def test_base(
self,
- client_no_amm,
- product,
- user_factory,
- wall_collection,
- thl_web_rr,
- session_collection,
- enriched_wall_merge,
- delete_df_collection,
- incite_item_factory,
+ client_no_amm: DaskClient,
+ product: Product,
+ user_factory: Callable[..., User],
+ wall_collection: WallDFCollection,
+ thl_web_rr: PostgresConfig,
+ session_collection: SessionDFCollection,
+ enriched_wall_merge: EnrichedWallMerge,
+ delete_df_collection: Callable[..., None],
+ incite_item_factory: Callable[..., None],
):
- from generalresearch.models.thl.user import User
# -- Build & Setup
delete_df_collection(coll=session_collection)
@@ -82,15 +80,15 @@ class TestEnrichedWall:
def test_base_item(
self,
- client_no_amm,
- product,
- user_factory,
- wall_collection,
- session_collection,
- enriched_wall_merge,
- delete_df_collection,
- thl_web_rr,
- incite_item_factory,
+ client_no_amm: DaskClient,
+ product: Product,
+ user_factory: Callable[..., User],
+ wall_collection: WallDFCollection,
+ session_collection: SessionDFCollection,
+ enriched_wall_merge: EnrichedWallMerge,
+ delete_df_collection: Callable[..., None],
+ thl_web_rr: PostgresConfig,
+ incite_item_factory: Callable[..., None],
):
# -- Build & Setup
delete_df_collection(coll=session_collection)
@@ -118,7 +116,7 @@ class TestEnrichedWall:
try:
modified_time1 = path.stat().st_mtime
- except (Exception,):
+ except OSError:
modified_time1 = 0
item.build(
@@ -158,18 +156,23 @@ class TestEnrichedWall:
class TestEnrichedWallToAdmin:
@pytest.fixture
- def start(self) -> "datetime":
- return datetime(year=2020, month=3, day=14, tzinfo=timezone.utc)
+ def start(self) -> datetime:
+ return datetime(year=2020, month=3, day=14, tzinfo=UTC)
@pytest.fixture
def offset(self) -> str:
return "1d"
@pytest.fixture
- def duration(self) -> Optional["timedelta"]:
+ def duration(self) -> timedelta | None:
return timedelta(days=5)
- def test_empty(self, enriched_wall_merge, client_no_amm, start):
+ def test_empty(
+ self,
+ enriched_wall_merge: EnrichedWallMerge,
+ client_no_amm: DaskClient,
+ start: datetime,
+ ):
from generalresearch.models.admin.request import ReportRequest
rr = ReportRequest.model_validate({"interval": "5min", "start": start})
@@ -186,18 +189,18 @@ class TestEnrichedWallToAdmin:
def test_to_admin_response(
self,
- event_report_request,
- enriched_wall_merge,
- client_no_amm,
- wall_collection,
- session_collection,
- thl_web_rr,
- user,
- session_factory,
- delete_df_collection,
- product_factory,
- user_factory,
- start,
+ event_report_request: ReportRequest,
+ enriched_wall_merge: EnrichedWallMerge,
+ client_no_amm: DaskClient,
+ wall_collection: WallDFCollection,
+ session_collection: SessionDFCollection,
+ thl_web_rr: PostgresConfig,
+ user: User,
+ session_factory: Callable[..., Session],
+ delete_df_collection: Callable[..., None],
+ product_factory: Callable[..., Product],
+ user_factory: Callable[..., User],
+ start: datetime,
):
delete_df_collection(coll=wall_collection)
delete_df_collection(coll=session_collection)
@@ -208,7 +211,7 @@ class TestEnrichedWallToAdmin:
for p in [p1, p2]:
u = user_factory(product=p)
for i in range(50):
- s = session_factory(
+ _ = session_factory(
user=u,
wall_count=2,
wall_req_cpi=Decimal("1.00"),
diff --git a/tests/incite/mergers/foundations/test_user_id_product.py b/tests/incite/mergers/foundations/test_user_id_product.py
index f96bfb4..8c4b2f7 100644
--- a/tests/incite/mergers/foundations/test_user_id_product.py
+++ b/tests/incite/mergers/foundations/test_user_id_product.py
@@ -1,24 +1,22 @@
-from datetime import timedelta, datetime, timezone
+from __future__ import annotations
+
+from datetime import UTC, datetime, timedelta
from itertools import product
+from typing import TYPE_CHECKING
import pandas as pd
import pytest
-
-# noinspection PyUnresolvedReferences
-from distributed.utils_test import (
- gen_cluster,
- client_no_amm,
- loop,
- loop_in_thread,
- cleanup,
- cluster_fixture,
- client,
-)
+from dask.distributed import Client as DaskClient
from generalresearch.incite.mergers.foundations.user_id_product import (
UserIdProductMergeItem,
)
-from test_utils.incite.mergers.conftest import user_id_product_merge
+
+if TYPE_CHECKING:
+ # noinspection PyUnresolvedReferences
+ from generalresearch.incite.mergers.foundations.user_id_product import (
+ UserIdProductMerge,
+ )
@pytest.mark.parametrize(
@@ -27,25 +25,28 @@ from test_utils.incite.mergers.conftest import user_id_product_merge
product(
["12h", "3D"],
[timedelta(days=5)],
- [
- (datetime.now(tz=timezone.utc) - timedelta(days=35)).replace(
- microsecond=0
- )
- ],
+ [(datetime.now(tz=UTC) - timedelta(days=35)).replace(microsecond=0)],
)
),
)
class TestUserIDProduct:
@pytest.mark.skip
- def test_base(self, client_no_amm, user_id_product_merge):
+ def test_base(
+ self, client_no_amm: DaskClient, user_id_product_merge: UserIdProductMerge
+ ):
ddf = user_id_product_merge.ddf()
df = client_no_amm.compute(collections=ddf, sync=True)
assert isinstance(df, pd.DataFrame)
assert not df.empty
@pytest.mark.skip
- def test_base_item(self, client_no_amm, user_id_product_merge, user_collection):
+ def test_base_item(
+ self,
+ client_no_amm: DaskClient,
+ user_id_product_merge: UserIdProductMerge,
+ user_collection,
+ ):
assert len(user_id_product_merge.items) == 1
for item in user_id_product_merge.items:
@@ -55,7 +56,7 @@ class TestUserIDProduct:
try:
modified_time1 = path.stat().st_mtime
- except (Exception,):
+ except OSError:
modified_time1 = 0
user_id_product_merge.build(client=client_no_amm, user_coll=user_collection)
@@ -64,7 +65,9 @@ class TestUserIDProduct:
assert modified_time2 > modified_time1
@pytest.mark.skip
- def test_read(self, client_no_amm, user_id_product_merge):
+ def test_read(
+ self, client_no_amm: DaskClient, user_id_product_merge: UserIdProductMerge
+ ):
users_ddf = user_id_product_merge.ddf()
df = client_no_amm.compute(collections=users_ddf, sync=True)