feat: add get_obj_by_attr fixture helper function (#4)

* feat: add get_obj_by_attr fixture helper function

* tests: add fixture utils
This commit is contained in:
d3vyce
2026-01-26 18:58:30 +01:00
committed by GitHub
parent 179385fd80
commit d9d7f60e8e
3 changed files with 85 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
from collections.abc import Callable, Sequence
from typing import Any, TypeVar
from sqlalchemy.orm import DeclarativeBase
T = TypeVar("T", bound=DeclarativeBase)
def get_obj_by_attr(
fixtures: Callable[[], Sequence[T]], attr_name: str, value: Any
) -> T:
"""Get a SQLAlchemy model instance by matching an attribute value.
Args:
fixtures: A fixture function registered via ``@registry.register``
that returns a sequence of SQLAlchemy model instances.
attr_name: Name of the attribute to match against.
value: Value to match.
Returns:
The first model instance where the attribute matches the given value.
Raises:
StopIteration: If no matching object is found.
"""
return next(obj for obj in fixtures() if getattr(obj, attr_name) == value)