"""pytest config.""" import os from typing import Any from unittest.mock import MagicMock import pytest from hypothesis import settings import application from video.api import app from video.logic import metadata from video.models.ows import product as ows_product from video.models.sql.classes import product_video, release from video.utils import status_checker settings.register_profile("test") settings.load_profile(os.getenv("HYPOTHESIS_PROFILE", "test")) @pytest.fixture def client() -> object: """Test http client.""" yield app.test_client() @pytest.fixture def app_context() -> object: """Enter app_context.""" app_context = application.app.app_context() app_context.g = MagicMock() with app_context: yield app_context @pytest.fixture def mock_submit_pre_auto_approval_funcs(mocker: Any) -> object: """Mock the functions before auto_approval code.""" def _setup_mocks( product_video_object: object, release_response: object, release_response_with_vendor: object, ) -> None: mocker.patch.object( ows_product, "check_product_ownership", return_value=True, ) mocker.patch.object( status_checker, "check_release_status_before_action", return_value=None, ) mocker.patch.object(product_video, "get", return_value=product_video_object) mocker.patch.object(product_video, "upsert", return_value=None) mocker.patch.object(metadata, "save_metadata", return_value=True) mocker.patch.object(release, "update", return_value=release_response) mocker.patch.object( release, "get_by_id_with_vendor", return_value=release_response_with_vendor ) return _setup_mocks @pytest.fixture def feature_flags() -> object: """Per-test fixture to toggle individual flags on/off. Usage: def test_something(feature_flags): feature_flags["ccm_vpb_composer_required"] = True """ set_keys = [] class _Flags: def __setitem__(self, flag: str, enabled: bool) -> None: key = flag.upper() if enabled: os.environ[key] = "true" else: os.environ.pop(key, None) if key not in set_keys: set_keys.append(key) yield _Flags() for key in set_keys: os.environ.pop(key, None)