mirror of
https://github.com/gogcom/galaxy-integrations-python-api.git
synced 2026-05-19 03:54:40 -04:00
SDK-3023: Introduce task managers
This commit is contained in:
committed by
Romuald Bierbasz
parent
0ab00e4119
commit
0294e2a1f1
@@ -7,11 +7,8 @@ def create_message(request):
|
||||
|
||||
def get_messages(write_mock):
|
||||
messages = []
|
||||
print("call_args_list", write_mock.call_args_list)
|
||||
for call_args in write_mock.call_args_list:
|
||||
print("call_args", call_args)
|
||||
data = call_args[0][0]
|
||||
print("data", data)
|
||||
for line in data.splitlines():
|
||||
message = json.loads(line)
|
||||
messages.append(message)
|
||||
|
||||
@@ -6,6 +6,7 @@ import pytest
|
||||
|
||||
from galaxy.api.plugin import Plugin
|
||||
from galaxy.api.consts import Platform
|
||||
from galaxy.unittest.mock import async_return_value
|
||||
|
||||
@pytest.fixture()
|
||||
def reader():
|
||||
@@ -16,8 +17,7 @@ def reader():
|
||||
@pytest.fixture()
|
||||
async def writer():
|
||||
stream = MagicMock(name="stream_writer")
|
||||
stream.write = MagicMock()
|
||||
stream.drain = MagicMock()
|
||||
stream.drain.side_effect = lambda: async_return_value(None)
|
||||
yield stream
|
||||
|
||||
@pytest.fixture()
|
||||
@@ -29,7 +29,7 @@ def write(writer):
|
||||
yield writer.write
|
||||
|
||||
@pytest.fixture()
|
||||
def plugin(reader, writer):
|
||||
async def plugin(reader, writer):
|
||||
"""Return plugin instance with all feature methods mocked"""
|
||||
methods = (
|
||||
"handshake_complete",
|
||||
@@ -55,7 +55,10 @@ def plugin(reader, writer):
|
||||
with ExitStack() as stack:
|
||||
for method in methods:
|
||||
stack.enter_context(patch.object(Plugin, method))
|
||||
yield Plugin(Platform.Generic, "0.1", reader, writer, "token")
|
||||
|
||||
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)
|
||||
|
||||
@@ -136,6 +136,7 @@ async def test_prepare_get_unlocked_achievements_context_error(plugin, read, wri
|
||||
}
|
||||
}
|
||||
read.side_effect = [async_return_value(create_message(request)), async_return_value(b"")]
|
||||
|
||||
await plugin.run()
|
||||
|
||||
assert get_messages(write) == [
|
||||
@@ -153,6 +154,7 @@ async def test_prepare_get_unlocked_achievements_context_error(plugin, read, wri
|
||||
@pytest.mark.asyncio
|
||||
async def test_import_in_progress(plugin, read, write):
|
||||
plugin.prepare_achievements_context.return_value = async_return_value(None)
|
||||
plugin.get_unlocked_achievements.return_value = async_return_value([])
|
||||
requests = [
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
@@ -179,21 +181,20 @@ async def test_import_in_progress(plugin, read, write):
|
||||
|
||||
await plugin.run()
|
||||
|
||||
assert get_messages(write) == [
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": "3",
|
||||
"result": None
|
||||
},
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": "4",
|
||||
"error": {
|
||||
"code": 600,
|
||||
"message": "Import already in progress"
|
||||
}
|
||||
messages = get_messages(write)
|
||||
assert {
|
||||
"jsonrpc": "2.0",
|
||||
"id": "3",
|
||||
"result": None
|
||||
} in messages
|
||||
assert {
|
||||
"jsonrpc": "2.0",
|
||||
"id": "4",
|
||||
"error": {
|
||||
"code": 600,
|
||||
"message": "Import already in progress"
|
||||
}
|
||||
]
|
||||
} in messages
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
@@ -179,21 +179,20 @@ async def test_import_in_progress(plugin, read, write):
|
||||
|
||||
await plugin.run()
|
||||
|
||||
assert get_messages(write) == [
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": "3",
|
||||
"result": None
|
||||
},
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": "4",
|
||||
"error": {
|
||||
"code": 600,
|
||||
"message": "Import already in progress"
|
||||
}
|
||||
messages = get_messages(write)
|
||||
assert {
|
||||
"jsonrpc": "2.0",
|
||||
"id": "3",
|
||||
"result": None
|
||||
} in messages
|
||||
assert {
|
||||
"jsonrpc": "2.0",
|
||||
"id": "4",
|
||||
"error": {
|
||||
"code": 600,
|
||||
"message": "Import already in progress"
|
||||
}
|
||||
]
|
||||
} in messages
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
@@ -46,6 +46,7 @@ async def test_shutdown(plugin, read, write):
|
||||
}
|
||||
read.side_effect = [async_return_value(create_message(request))]
|
||||
await plugin.run()
|
||||
await plugin.wait_closed()
|
||||
plugin.shutdown.assert_called_with()
|
||||
assert get_messages(write) == [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user