mirror of
https://github.com/gogcom/galaxy-integrations-python-api.git
synced 2025-12-25 16:08:21 -05:00
88 lines
2.3 KiB
Python
88 lines
2.3 KiB
Python
import logging
|
|
from contextlib import ExitStack
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from galaxy.api.consts import Platform
|
|
from galaxy.api.plugin import Plugin
|
|
from galaxy.unittest.mock import async_return_value
|
|
|
|
|
|
@pytest.fixture()
|
|
def reader():
|
|
stream = MagicMock(name="stream_reader")
|
|
stream.read = MagicMock()
|
|
yield stream
|
|
|
|
|
|
@pytest.fixture()
|
|
async def writer():
|
|
stream = MagicMock(name="stream_writer")
|
|
stream.drain.side_effect = lambda: async_return_value(None)
|
|
yield stream
|
|
|
|
|
|
@pytest.fixture()
|
|
def read(reader):
|
|
yield reader.read
|
|
|
|
|
|
@pytest.fixture()
|
|
def write(writer):
|
|
yield writer.write
|
|
|
|
|
|
@pytest.fixture()
|
|
async def plugin(reader, writer):
|
|
"""Return plugin instance with all feature methods mocked"""
|
|
methods = (
|
|
"handshake_complete",
|
|
"authenticate",
|
|
"get_owned_games",
|
|
"prepare_achievements_context",
|
|
"get_unlocked_achievements",
|
|
"achievements_import_complete",
|
|
"get_local_games",
|
|
"launch_game",
|
|
"launch_platform_client",
|
|
"install_game",
|
|
"uninstall_game",
|
|
"get_friends",
|
|
"get_game_time",
|
|
"prepare_game_times_context",
|
|
"game_times_import_complete",
|
|
"shutdown_platform_client",
|
|
"shutdown",
|
|
"tick",
|
|
"get_game_library_settings",
|
|
"prepare_game_library_settings_context",
|
|
"game_library_settings_import_complete",
|
|
"get_os_compatibility",
|
|
"prepare_os_compatibility_context",
|
|
"os_compatibility_import_complete",
|
|
"get_user_presence",
|
|
"prepare_user_presence_context",
|
|
"user_presence_import_complete",
|
|
"get_local_size",
|
|
"prepare_local_size_context",
|
|
"local_size_import_complete",
|
|
"get_subscriptions",
|
|
"get_subscription_games",
|
|
"prepare_subscription_games_context",
|
|
"subscription_games_import_complete"
|
|
)
|
|
|
|
with ExitStack() as stack:
|
|
for method in methods:
|
|
stack.enter_context(patch.object(Plugin, method))
|
|
|
|
async with Plugin(Platform.Generic, "0.1", reader, writer, "token") as plugin:
|
|
plugin.shutdown.return_value = async_return_value(None)
|
|
yield plugin
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def my_caplog(caplog):
|
|
caplog.set_level(logging.DEBUG)
|