aboutsummaryrefslogtreecommitdiff
path: root/test_utils
diff options
context:
space:
mode:
Diffstat (limited to 'test_utils')
-rw-r--r--test_utils/conftest.py2
-rw-r--r--test_utils/managers/gr/conftest.py48
-rw-r--r--test_utils/models/conftest.py37
-rw-r--r--test_utils/models/gr/conftest.py56
4 files changed, 81 insertions, 62 deletions
diff --git a/test_utils/conftest.py b/test_utils/conftest.py
index 041caf2..f55fe11 100644
--- a/test_utils/conftest.py
+++ b/test_utils/conftest.py
@@ -180,7 +180,7 @@ def git_key_path(
yield Path(fn)
- # os.unlink(fn)
+ os.unlink(fn)
@pytest.fixture(scope="session")
diff --git a/test_utils/managers/gr/conftest.py b/test_utils/managers/gr/conftest.py
index 69f3e9a..40bd7b3 100644
--- a/test_utils/managers/gr/conftest.py
+++ b/test_utils/managers/gr/conftest.py
@@ -1,8 +1,11 @@
from __future__ import annotations
-from collections.abc import Callable
+import subprocess
+from collections.abc import Callable, Generator
+from random import randint
import pytest
+import redis
import redis.asyncio as redis_async
from pydantic import PostgresDsn
from redis import Redis
@@ -20,8 +23,15 @@ from generalresearch.redis_helper import RedisConfig
# === Msc ===
@pytest.fixture(scope="session")
+def gr_redis_config_db() -> str:
+ return str(randint(99, 1_023))
+
+
+@pytest.fixture(scope="session")
def gr_redis(settings: GRLBaseSettings) -> Redis:
- assert "unittest" in str(settings.gr_redis) or "127.0.0.1" in str(settings.gr_redis)
+ assert "unittest" in str(settings.testing_redis) or "127.0.0.1" in str(
+ settings.testing_redis
+ )
return Redis.from_url(
url=str(settings.gr_redis),
decode_responses=True,
@@ -32,10 +42,12 @@ def gr_redis(settings: GRLBaseSettings) -> Redis:
@pytest.fixture
def gr_redis_async(settings: GRLBaseSettings) -> redis_async.Redis:
- assert "unittest" in str(settings.gr_redis) or "127.0.0.1" in str(settings.gr_redis)
+ assert "unittest" in str(settings.testing_redis) or "127.0.0.1" in str(
+ settings.testing_redis
+ )
return redis_async.Redis.from_url(
- str(settings.gr_redis),
+ str(settings.testing_redis),
decode_responses=True,
socket_timeout=0.20,
socket_connect_timeout=0.20,
@@ -43,21 +55,39 @@ def gr_redis_async(settings: GRLBaseSettings) -> redis_async.Redis:
@pytest.fixture(scope="session")
-def gr_redis_config(settings: GRLBaseSettings) -> RedisConfig:
- assert "unittest" in str(settings.gr_redis) or "127.0.0.1" in str(settings.gr_redis)
+def gr_redis_config(
+ settings: GRLBaseSettings, gr_redis_config_db: str
+) -> Generator[RedisConfig]:
+ assert "unittest" in str(settings.testing_redis) or "127.0.0.1" in str(
+ settings.testing_redis
+ )
- return RedisConfig(
- dsn=settings.gr_redis,
+ uri = f"redis://{settings.testing_redis}/{gr_redis_config_db}"
+
+ res = subprocess.run(
+ ["redis-cli", "-u", uri, "SET", "jenkins_lock", "1", "NX", "EX", "3600"],
+ check=True,
+ text=True,
+ capture_output=True,
+ )
+
+ if res.stdout.strip() != "OK":
+ raise ValueError("Redis already locked... aborting.")
+
+ yield RedisConfig(
+ dsn=uri,
decode_responses=True,
socket_timeout=settings.redis_timeout,
socket_connect_timeout=settings.redis_timeout,
)
+ r = redis.from_url(uri)
+ r.flushdb()
+
@pytest.fixture(scope="session")
def gr_db(django_db_factory: Callable[..., PostgresDsn]) -> PostgresConfig:
_dsn = django_db_factory("gr.common")
- print("DDDD:", _dsn)
return PostgresConfig(
dsn=_dsn,
diff --git a/test_utils/models/conftest.py b/test_utils/models/conftest.py
index 5570b40..3a10ea3 100644
--- a/test_utils/models/conftest.py
+++ b/test_utils/models/conftest.py
@@ -22,12 +22,6 @@ from generalresearch.pg_helper import PostgresConfig
if TYPE_CHECKING:
from generalresearch.currency import USDCent
- from generalresearch.managers.gr.business import (
- BusinessAddressManager,
- BusinessBankAccountManager,
- BusinessManager,
- )
- from generalresearch.managers.gr.team import TeamManager
from generalresearch.managers.thl.buyer import BuyerManager
from generalresearch.managers.thl.ipinfo import (
IPGeonameManager,
@@ -45,8 +39,6 @@ if TYPE_CHECKING:
from generalresearch.managers.thl.wall import WallManager
from generalresearch.models.gr.business import (
Business,
- BusinessAddress,
- BusinessBankAccount,
)
from generalresearch.models.gr.team import Team
from generalresearch.models.thl.ipinfo import IPGeoname, IPInformation
@@ -407,35 +399,6 @@ def bp_payout_factory(
return _inner
-# === GR ===
-
-
-@pytest.fixture
-def business(request, business_manager: BusinessManager) -> Business:
- return business_manager.create_dummy()
-
-
-@pytest.fixture
-def business_address(
- request, business: Business, business_address_manager: BusinessAddressManager
-) -> BusinessAddress:
- return business_address_manager.create_dummy(business_id=business.id)
-
-
-@pytest.fixture
-def business_bank_account(
- request,
- business: Business,
- business_bank_account_manager: BusinessBankAccountManager,
-) -> BusinessBankAccount:
- return business_bank_account_manager.create_dummy(business_id=business.id)
-
-
-@pytest.fixture
-def team(request, team_manager: TeamManager) -> Team:
- return team_manager.create_dummy()
-
-
@pytest.fixture
def audit_log(audit_log_manager: AuditLogManager, user: User) -> AuditLog:
diff --git a/test_utils/models/gr/conftest.py b/test_utils/models/gr/conftest.py
index 90b86aa..b623255 100644
--- a/test_utils/models/gr/conftest.py
+++ b/test_utils/models/gr/conftest.py
@@ -1,6 +1,7 @@
from __future__ import annotations
from collections.abc import Callable
+from random import randint
from uuid import uuid4
import pytest
@@ -20,7 +21,6 @@ from generalresearch.models.gr.business import (
Business,
BusinessAddress,
BusinessBankAccount,
- BusinessType,
TransferMethod,
)
from generalresearch.models.gr.team import Membership, Team
@@ -134,27 +134,38 @@ def gr_business_address_factory(
@pytest.fixture
def gr_business_factory(
- gr_bm: BusinessManager,
+ gr_business_manager: BusinessManager,
) -> Callable[..., Business]:
def _inner(
- uuid: UUIDStr | None = None,
- name: str | None = None,
- team: Team | None = None,
- kind: BusinessType | None = None,
- tax_number: str | None = None,
+ save: bool = True, name: str | None = None, team: Team | None = None, **kwargs
) -> Business:
- from random import randint
+ name = name or f"<Unknown {uuid4().hex[:12]}>"
+ tax_number = str(randint(1, 999_999_999))
+
+ if save:
+ return gr_business_manager.create(
+ name=name,
+ kind="c",
+ uuid=uuid4().hex,
+ team=team,
+ tax_number=tax_number,
+ **kwargs,
+ )
+ else:
+ raise ValueError("Unsaved Business not supported yet")
- uuid = uuid or uuid4().hex
- name = name or "< Unknown >"
- tax_number = tax_number or str(randint(1, 999_999_999))
+ return _inner
- return gr_bm.create(
- uuid=uuid, name=name, team=team, kind=kind, tax_number=tax_number
- )
- return _inner
+@pytest.fixture
+def gr_business(gr_business_factory: Callable[..., Business]) -> Business:
+ return gr_business_factory(save=True)
+
+
+@pytest.fixture
+def unsaved_gr_business(gr_business_factory: Callable[..., Business]) -> Business:
+ return gr_business_factory(save=False)
@pytest.fixture
@@ -183,6 +194,21 @@ def gr_user_token(
return res
+@pytest.fixture
+def business_address(
+ gr_business: Business, business_address_manager: BusinessAddressManager
+) -> BusinessAddress:
+ return business_address_manager.create_dummy(business_id=gr_business.id)
+
+
+@pytest.fixture
+def business_bank_account(
+ gr_business: Business,
+ business_bank_account_manager: BusinessBankAccountManager,
+) -> BusinessBankAccount:
+ return business_bank_account_manager.create_dummy(business_id=gr_business.id)
+
+
@pytest.fixture()
def gr_user_token_header(gr_user_token: GRToken) -> dict[str, str]:
return gr_user_token.auth_header