import contextlib from collections.abc import Iterator from typing import Any from unittest import mock from fansifter_common.testing.factories import FactoryService from app import settings from app.adapters.db import Model, db _factory = FactoryService() _factory.scan("tests.unit.factories") def build_model[T](model: type[T], **kwargs: Any) -> T: return _factory.build(model, **kwargs) def create_model[T: Model](model: type[T], **kwargs: Any) -> T: return _factory.create(db.session, model, **kwargs) @contextlib.contextmanager def override_settings(**kwargs: Any) -> Iterator[None]: new_settings = settings.model_copy(update=kwargs) with mock.patch("app.config.settings.__wrapped__", new_settings): yield