from typing import TYPE_CHECKING import pytest from jb.managers import Permission from generalresearchutils.pg_helper import PostgresConfig from mypy_boto3_mturk import MTurkClient if TYPE_CHECKING: from jb.managers.hit import HitQuestionManager, HitTypeManager, HitManager from jb.managers.assignment import AssignmentManager from jb.managers.bonus import BonusManager from jb.managers.amt import AMTManager # --- Managers --- @pytest.fixture(scope="session") def amtm(amt_client: MTurkClient) -> "AMTManager": from jb.managers.amt import AMTManager amtm = AMTManager(amt_client=amt_client) assert "mturk-requester-sandbox" in amtm.amt_client.meta.endpoint_url return amtm @pytest.fixture(scope="session") def hqm(pg_config: PostgresConfig) -> "HitQuestionManager": assert ( pg_config.dsn.path and "/unittest-" in pg_config.dsn.path ), "pg_config must point to a unittest database (dsn path must contain '/unittest-')" from jb.managers.hit import HitQuestionManager return HitQuestionManager( pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE] ) @pytest.fixture(scope="session") def htm(pg_config: PostgresConfig) -> "HitTypeManager": assert ( pg_config.dsn.path and "/unittest-" in pg_config.dsn.path ), "pg_config must point to a unittest database (dsn path must contain '/unittest-')" from jb.managers.hit import HitTypeManager return HitTypeManager( pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE] ) @pytest.fixture(scope="session") def hm(pg_config: PostgresConfig) -> "HitManager": assert ( pg_config.dsn.path and "/unittest-" in pg_config.dsn.path ), "pg_config must point to a unittest database (dsn path must contain '/unittest-')" from jb.managers.hit import HitManager return HitManager( pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE] ) @pytest.fixture(scope="session") def am(pg_config: PostgresConfig) -> "AssignmentManager": assert ( pg_config.dsn.path and "/unittest-" in pg_config.dsn.path ), "pg_config must point to a unittest database (dsn path must contain '/unittest-')" from jb.managers.assignment import AssignmentManager return AssignmentManager( pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE] ) @pytest.fixture(scope="session") def bm(pg_config: PostgresConfig) -> "BonusManager": assert ( pg_config.dsn.path and "/unittest-" in pg_config.dsn.path ), "pg_config must point to a unittest database (dsn path must contain '/unittest-')" from jb.managers.bonus import BonusManager return BonusManager( pg_config=pg_config, permissions=[Permission.READ, Permission.CREATE] )