Added module-level fixtures in tests
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import math
|
||||
import os
|
||||
import time
|
||||
from contextlib import contextmanager
|
||||
from enum import StrEnum
|
||||
from typing import Any
|
||||
|
||||
@@ -50,8 +51,8 @@ def _wait_for_server(): # noqa: ANN202
|
||||
break
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_vendor():
|
||||
@contextmanager
|
||||
def random_vendor_impl():
|
||||
"""Return a random vendor."""
|
||||
# Add vendor
|
||||
result = httpx.post(
|
||||
@@ -60,15 +61,15 @@ def random_vendor():
|
||||
)
|
||||
result.raise_for_status()
|
||||
|
||||
vendor = result.json()
|
||||
vendor: dict[str, Any] = result.json()
|
||||
yield vendor
|
||||
|
||||
# Delete vendor
|
||||
httpx.delete(f"{URL}/api/v1/vendor/{vendor['id']}").raise_for_status()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_empty_vendor():
|
||||
@contextmanager
|
||||
def random_empty_vendor_impl():
|
||||
"""Return a random vendor with only required fields specified."""
|
||||
# Add vendor
|
||||
result = httpx.post(
|
||||
@@ -77,43 +78,44 @@ def random_empty_vendor():
|
||||
)
|
||||
result.raise_for_status()
|
||||
|
||||
vendor = result.json()
|
||||
vendor: dict[str, Any] = result.json()
|
||||
yield vendor
|
||||
|
||||
# Delete vendor
|
||||
httpx.delete(f"{URL}/api/v1/vendor/{vendor['id']}").raise_for_status()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_filament(random_vendor: dict[str, Any]):
|
||||
@contextmanager
|
||||
def random_filament_impl():
|
||||
"""Return a random filament."""
|
||||
# Add filament
|
||||
result = httpx.post(
|
||||
f"{URL}/api/v1/filament",
|
||||
json={
|
||||
"name": "Filament X",
|
||||
"vendor_id": random_vendor["id"],
|
||||
"material": "PLA",
|
||||
"price": 100,
|
||||
"density": 1.25,
|
||||
"diameter": 1.75,
|
||||
"weight": 1000,
|
||||
"spool_weight": 250,
|
||||
"article_number": "123456789",
|
||||
"comment": "abcdefghåäö",
|
||||
},
|
||||
)
|
||||
result.raise_for_status()
|
||||
with random_vendor_impl() as random_vendor:
|
||||
# Add filament
|
||||
result = httpx.post(
|
||||
f"{URL}/api/v1/filament",
|
||||
json={
|
||||
"name": "Filament X",
|
||||
"vendor_id": random_vendor["id"],
|
||||
"material": "PLA",
|
||||
"price": 100,
|
||||
"density": 1.25,
|
||||
"diameter": 1.75,
|
||||
"weight": 1000,
|
||||
"spool_weight": 250,
|
||||
"article_number": "123456789",
|
||||
"comment": "abcdefghåäö",
|
||||
},
|
||||
)
|
||||
result.raise_for_status()
|
||||
|
||||
filament = result.json()
|
||||
yield filament
|
||||
filament: dict[str, Any] = result.json()
|
||||
yield filament
|
||||
|
||||
# Delete filament
|
||||
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()
|
||||
# Delete filament
|
||||
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_empty_filament():
|
||||
@contextmanager
|
||||
def random_empty_filament_impl():
|
||||
"""Return a random filament with only required fields specified."""
|
||||
# Add filament
|
||||
result = httpx.post(
|
||||
@@ -125,32 +127,103 @@ def random_empty_filament():
|
||||
)
|
||||
result.raise_for_status()
|
||||
|
||||
filament = result.json()
|
||||
filament: dict[str, Any] = result.json()
|
||||
yield filament
|
||||
|
||||
# Delete filament
|
||||
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()
|
||||
|
||||
|
||||
@contextmanager
|
||||
def random_empty_filament_empty_vendor_impl():
|
||||
"""Return a random filament with only required fields specified and a vendor with only required fields specified."""
|
||||
with random_empty_vendor_impl() as random_empty_vendor:
|
||||
# Add filament
|
||||
result = httpx.post(
|
||||
f"{URL}/api/v1/filament",
|
||||
json={
|
||||
"vendor_id": random_empty_vendor["id"],
|
||||
"density": 1.25,
|
||||
"diameter": 1.75,
|
||||
},
|
||||
)
|
||||
result.raise_for_status()
|
||||
|
||||
filament: dict[str, Any] = result.json()
|
||||
yield filament
|
||||
|
||||
# Delete filament
|
||||
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_empty_filament_empty_vendor(random_empty_vendor: dict[str, Any]):
|
||||
def random_vendor():
|
||||
"""Return a random vendor."""
|
||||
with random_vendor_impl() as random_vendor:
|
||||
yield random_vendor
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_empty_vendor():
|
||||
"""Return a random vendor with only required fields specified."""
|
||||
with random_empty_vendor_impl() as random_empty_vendor:
|
||||
yield random_empty_vendor
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_filament():
|
||||
"""Return a random filament."""
|
||||
with random_filament_impl() as random_filament:
|
||||
yield random_filament
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_empty_filament():
|
||||
"""Return a random filament with only required fields specified."""
|
||||
with random_empty_filament_impl() as random_empty_filament:
|
||||
yield random_empty_filament
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def random_empty_filament_empty_vendor():
|
||||
"""Return a random filament with only required fields specified and a vendor with only required fields specified."""
|
||||
# Add filament
|
||||
result = httpx.post(
|
||||
f"{URL}/api/v1/filament",
|
||||
json={
|
||||
"vendor_id": random_empty_vendor["id"],
|
||||
"density": 1.25,
|
||||
"diameter": 1.75,
|
||||
},
|
||||
)
|
||||
result.raise_for_status()
|
||||
with random_empty_filament_empty_vendor_impl() as random_empty_filament_empty_vendor:
|
||||
yield random_empty_filament_empty_vendor
|
||||
|
||||
filament = result.json()
|
||||
yield filament
|
||||
|
||||
# Delete filament
|
||||
httpx.delete(f"{URL}/api/v1/filament/{filament['id']}").raise_for_status()
|
||||
@pytest.fixture(scope="module")
|
||||
def random_vendor_mod():
|
||||
"""Return a random vendor."""
|
||||
with random_vendor_impl() as random_vendor:
|
||||
yield random_vendor
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def random_empty_vendor_mod():
|
||||
"""Return a random vendor with only required fields specified."""
|
||||
with random_empty_vendor_impl() as random_empty_vendor:
|
||||
yield random_empty_vendor
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def random_filament_mod():
|
||||
"""Return a random filament."""
|
||||
with random_filament_impl() as random_filament:
|
||||
yield random_filament
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def random_empty_filament_mod():
|
||||
"""Return a random filament with only required fields specified."""
|
||||
with random_empty_filament_impl() as random_empty_filament:
|
||||
yield random_empty_filament
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def random_empty_filament_empty_vendor_mod():
|
||||
"""Return a random filament with only required fields specified and a vendor with only required fields specified."""
|
||||
with random_empty_filament_empty_vendor_impl() as random_empty_filament_empty_vendor:
|
||||
yield random_empty_filament_empty_vendor
|
||||
|
||||
|
||||
def length_from_weight(*, weight: float, diameter: float, density: float) -> float:
|
||||
|
||||
Reference in New Issue
Block a user