# -*- coding: utf-8 -*- from __future__ import annotations import uuid from django.utils.timezone import now import pytest from hotpocket_soa.dto.saves import SaveOut @pytest.fixture def save_url_factory(): def factory(): return f'https://{uuid.uuid4()}.local/' return factory @pytest.fixture def save_url(save_url_factory): return save_url_factory() @pytest.fixture def save_factory(request: pytest.FixtureRequest): default_account = request.getfixturevalue('account') default_url = request.getfixturevalue('save_url') def factory(account=None, **kwargs): from hotpocket_backend_testing.factories.saves import SaveFactory if 'url' not in kwargs: kwargs['url'] = default_url return SaveFactory( account_uuid=( account.pk if account is not None else default_account.pk ), **kwargs, ) return factory @pytest.fixture def save(save_factory): return save_factory() @pytest.fixture def save_out(save): return SaveOut.model_validate(save, from_attributes=True) @pytest.fixture def other_save(save_factory, save_url_factory): return save_factory(url=save_url_factory()) @pytest.fixture def other_save_out(other_save): return SaveOut.model_validate(other_save, from_attributes=True) @pytest.fixture def processed_save(save_factory, save_url_factory): return save_factory(url=save_url_factory(), last_processed_at=now()) @pytest.fixture def processed_save_out(processed_save): return SaveOut.model_validate(processed_save, from_attributes=True) @pytest.fixture def netloc_banned_save(save_factory, save_url_factory): return save_factory(url=save_url_factory(), is_netloc_banned=True) @pytest.fixture def netloc_banned_save_out(netloc_banned_save): return SaveOut.model_validate(netloc_banned_save, from_attributes=True) @pytest.fixture def deleted_save(save_factory, save_url_factory): return save_factory(url=save_url_factory(), deleted_at=now()) @pytest.fixture def deleted_save_out(deleted_save): return SaveOut.model_validate(deleted_save, from_attributes=True) @pytest.fixture def other_account_save(save_factory, other_account, save_url_factory): return save_factory(account=other_account, url=save_url_factory()) @pytest.fixture def other_account_save_out(other_account_save): return SaveOut.model_validate(other_account_save, from_attributes=True)