Source code for pytest_houdini.fixtures.soho

"""Fixtures to support mocking Mantra/SOHO related functionality."""

# Future
from __future__ import annotations

# Standard Library
import sys
from typing import TYPE_CHECKING, Any, NamedTuple

# Third Party
import pytest

if TYPE_CHECKING:
    from pytest_mock import MockerFixture

# Fixtures


[docs] @pytest.fixture def patch_soho(monkeypatch: pytest.MonkeyPatch, mocker: MockerFixture) -> NamedTuple: """Mock importing of mantra/soho related modules. Available mocked modules are available via their original names from the fixture provided named tuple. Available mocked modules: - IFDapi - IFDframe - IFDhooks - IFDsettings - mantra - soho >>> def test_soho_thing(patch_soho): ... patch_soho.mantra.property.return_value = 3 ... # Test code """ mock_api = mocker.MagicMock() mock_frame = mocker.MagicMock() mock_hooks = mocker.MagicMock() mock_mantra = mocker.MagicMock() mock_settings = mocker.MagicMock() mock_soho = mocker.MagicMock() monkeypatch.setitem(sys.modules, "IFDapi", mock_api) monkeypatch.setitem(sys.modules, "IFDframe", mock_frame) monkeypatch.setitem(sys.modules, "IFDhooks", mock_hooks) monkeypatch.setitem(sys.modules, "IFDsettings", mock_settings) monkeypatch.setitem(sys.modules, "mantra", mock_mantra) monkeypatch.setitem(sys.modules, "soho", mock_soho) class MockSoho(NamedTuple): IFDapi: Any IFDframe: Any IFDhooks: Any IFDsettings: Any mantra: Any soho: Any return MockSoho(mock_api, mock_frame, mock_hooks, mock_settings, mock_mantra, mock_soho)