added tests for body processing with visitor
This commit is contained in:
parent
8d6dd9e552
commit
f0ffc8fb8b
@ -90,4 +90,11 @@ def queue_manager(queue_manager_name) -> QueueManager:
|
|||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def callback():
|
def callback():
|
||||||
return lambda x: x**2
|
return lambda x: x * 2
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def analysis_callback(callback):
|
||||||
|
def inner(data: bytes):
|
||||||
|
return callback(data.decode())
|
||||||
|
return inner
|
||||||
|
|||||||
@ -21,7 +21,7 @@ class TestConsumer:
|
|||||||
):
|
):
|
||||||
|
|
||||||
def produce_items():
|
def produce_items():
|
||||||
return range(3)
|
return map(str, range(3))
|
||||||
|
|
||||||
queue_manager.clear()
|
queue_manager.clear()
|
||||||
|
|
||||||
@ -33,4 +33,4 @@ class TestConsumer:
|
|||||||
for _, r in zip(produce_items(), requests):
|
for _, r in zip(produce_items(), requests):
|
||||||
queue_manager.publish_response(r, callback)
|
queue_manager.publish_response(r, callback)
|
||||||
|
|
||||||
assert queue_manager.output_queue.to_list() == [0, 1, 4]
|
assert queue_manager.output_queue.to_list() == ["00", "11", "22"]
|
||||||
|
|||||||
@ -4,8 +4,8 @@ from pyinfra.visitor import QueueVisitor, get_object_descriptor
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def visitor(storage, callback):
|
def visitor(storage, analysis_callback):
|
||||||
return QueueVisitor(storage, callback)
|
return QueueVisitor(storage, analysis_callback)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
@ -21,3 +21,9 @@ class TestStorage:
|
|||||||
storage.put_object(**get_object_descriptor(body), data=b"content")
|
storage.put_object(**get_object_descriptor(body), data=b"content")
|
||||||
data_received = visitor.load_data(body)
|
data_received = visitor.load_data(body)
|
||||||
assert b"content" == data_received
|
assert b"content" == data_received
|
||||||
|
|
||||||
|
def test_visitor_call_method_pulls_data_and_executes_callback(self, visitor, body, storage, bucket_name):
|
||||||
|
storage.clear_bucket(bucket_name)
|
||||||
|
storage.put_object(**get_object_descriptor(body), data="2".encode())
|
||||||
|
response_body = visitor(body)
|
||||||
|
assert response_body == "22"
|
||||||
|
|||||||
@ -28,8 +28,8 @@ class QueueVisitor:
|
|||||||
def load_data(self, body):
|
def load_data(self, body):
|
||||||
return self.storage.get_object(**get_object_descriptor(body))
|
return self.storage.get_object(**get_object_descriptor(body))
|
||||||
|
|
||||||
def process_data(self):
|
def process_data(self, data):
|
||||||
pass
|
return self.callback(data)
|
||||||
|
|
||||||
def __call__(self, body):
|
def __call__(self, body):
|
||||||
pass
|
return self.process_data(self.load_data(body))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user