Skip to content
Snippets Groups Projects
Commit 515d5b7d authored by Sybren A. Stüvel's avatar Sybren A. Stüvel
Browse files

Fixed some test issues with CoroMock()

parent 3d121eee
Branches
Tags
No related merge requests found
...@@ -37,12 +37,16 @@ class EmptyResponse: ...@@ -37,12 +37,16 @@ class EmptyResponse:
pass pass
def CoroMock(return_value=...): def CoroMock(return_value=None):
"""Corountine mocking object. """Corountine mocking object.
For an example, see test_coro_mock.py. For an example, see test_coro_mock.py.
Source: http://stackoverflow.com/a/32505333/875379 Source: http://stackoverflow.com/a/32505333/875379
:param return_value: whatever you want to have set as return value.
This must always be set. Pass the ellipsis object ... to not set this; in that case
you are responsible yourself to set coromock.coro.return_value.
""" """
import asyncio import asyncio
......
import typing
from unittest.mock import Mock from unittest.mock import Mock
from abstract_worker_test import AbstractWorkerTest from abstract_worker_test import AbstractWorkerTest
...@@ -16,7 +14,6 @@ class MayIRunTest(AbstractWorkerTest): ...@@ -16,7 +14,6 @@ class MayIRunTest(AbstractWorkerTest):
self.loop = construct_asyncio_loop() self.loop = construct_asyncio_loop()
self.manager = Mock(spec=FlamencoManager) self.manager = Mock(spec=FlamencoManager)
self.manager.get = Mock()
self.worker = Mock(spec=FlamencoWorker) self.worker = Mock(spec=FlamencoWorker)
self.shutdown_future = self.loop.create_future() self.shutdown_future = self.loop.create_future()
...@@ -25,22 +22,23 @@ class MayIRunTest(AbstractWorkerTest): ...@@ -25,22 +22,23 @@ class MayIRunTest(AbstractWorkerTest):
poll_interval=timedelta(seconds=0.2), poll_interval=timedelta(seconds=0.2),
loop=self.loop) loop=self.loop)
def _mock_get(self, *json_responses: dict): def _mock_get(self, *json_responses):
import collections from collections import deque
values = collections.deque(json_responses)
values = deque(json_responses)
async def mocked_get(*args, **kwargs): async def mocked_get(*args, **kwargs):
mock_resp = Mock() mocked_response = Mock()
mock_resp.json.return_value = values.popleft() mocked_response.json.return_value = values.popleft()
return mock_resp return mocked_response
self.manager.get = mocked_get self.manager.get = mocked_get
def test_may_i_run_false(self): def test_may_i_run_false(self):
self._mock_get({ self._mock_get({
'may_keep_running': False, 'may_keep_running': False,
'reason': 'je moeder', 'reason': 'je moeder',
}) })
result = self.loop.run_until_complete(self.mir.may_i_run('1234')) result = self.loop.run_until_complete(self.mir.may_i_run('1234'))
self.assertFalse(result) self.assertFalse(result)
......
...@@ -81,7 +81,7 @@ class BlenderRenderTest(AbstractCommandTest): ...@@ -81,7 +81,7 @@ class BlenderRenderTest(AbstractCommandTest):
'filepath': filepath, 'filepath': filepath,
} }
cse = CoroMock() cse = CoroMock(...)
cse.coro.return_value.wait = CoroMock(return_value=0) cse.coro.return_value.wait = CoroMock(return_value=0)
with patch('asyncio.create_subprocess_exec', new=cse) as mock_cse: with patch('asyncio.create_subprocess_exec', new=cse) as mock_cse:
self.loop.run_until_complete(self.cmd.run(settings)) self.loop.run_until_complete(self.cmd.run(settings))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment