Skip to content

Commit 66bd5f8

Browse files
committed
Implemented tests for AmqpExtension
1 parent ab26f19 commit 66bd5f8

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

tests/amqp/__init__.py

Whitespace-only changes.

tests/amqp/test_extension.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import asyncio
2+
import os
3+
4+
import pytest
5+
from sage_utils.amqp.extension import AmqpExtension
6+
from sage_utils.amqp.base import AmqpWorker
7+
8+
9+
class FakeConfig(object):
10+
11+
def get(self, key, default=None):
12+
return os.environ.get(key, default)
13+
14+
15+
class Application(object):
16+
17+
def __init__(self, config=None):
18+
super(Application, self).__init__()
19+
self.config = config
20+
21+
22+
class CustomWorker(AmqpWorker):
23+
24+
async def run(self, *args, **kwargs):
25+
await self.connect()
26+
27+
28+
@pytest.mark.asyncio
29+
async def test_extension_without_workers(event_loop):
30+
app = Application()
31+
extension = AmqpExtension(app)
32+
33+
await extension.init(event_loop)
34+
assert 'extensions' in app.__dict__
35+
assert isinstance(app.extensions, dict)
36+
assert len(app.extensions.keys()) == 1
37+
assert extension.extension_name in app.extensions.keys()
38+
assert app.extensions[extension.extension_name] == extension
39+
assert len(extension.active_tasks) == 0
40+
41+
await asyncio.sleep(0.1)
42+
43+
await extension.deinit(event_loop)
44+
assert 'extensions' in app.__dict__
45+
assert extension.extension_name not in app.extensions.keys()
46+
assert getattr(app, AmqpExtension.app_attribute) is None
47+
assert len(extension.active_tasks) == 0
48+
49+
50+
@pytest.mark.asyncio
51+
async def test_extension_init_with_workers(event_loop):
52+
app = Application(config=FakeConfig())
53+
amqp_worker = CustomWorker(app)
54+
extension = AmqpExtension(app)
55+
extension.register_worker(amqp_worker)
56+
57+
await extension.init(event_loop)
58+
assert 'extensions' in app.__dict__
59+
assert isinstance(app.extensions, dict)
60+
assert len(app.extensions.keys()) == 1
61+
assert extension.extension_name in app.extensions.keys()
62+
assert app.extensions[extension.extension_name] == extension
63+
assert len(extension.active_tasks) == 1
64+
65+
await asyncio.sleep(0.1)
66+
67+
await extension.deinit(event_loop)
68+
assert 'extensions' in app.__dict__
69+
assert extension.extension_name not in app.extensions.keys()
70+
assert getattr(app, AmqpExtension.app_attribute) is None
71+
assert len(extension.active_tasks) == 1

0 commit comments

Comments
 (0)