Files
saladeaula.digital/layercake/tests/test_batch.py
2025-05-30 15:32:31 -03:00

55 lines
1.4 KiB
Python

from layercake.batch import BatchProcessor, Result, Status
processor = BatchProcessor()
def test_batch():
def record_handler(record: bool):
if record:
return True
raise ValueError('Invalid record')
records = (
True,
True,
False,
)
with processor(records=records, handler=record_handler) as p:
processed_messages = p.process()
assert len(processed_messages) == 3
fail_record = processed_messages[2]
assert isinstance(fail_record.cause, ValueError)
assert str(fail_record.cause) == 'Invalid record'
assert processor.successes == [True, True]
assert processor.failures == [False]
with processor(records=(False,), handler=record_handler):
processed_messages = processor.process()
assert processed_messages[0].status == Status.FAIL
assert processor.successes == []
assert processor.failures == [False]
def test_batch_context():
def record_handler(val: int, context: dict):
return val * context['multiplier']
with processor(
records=(2, 3, 4),
handler=record_handler,
context={'multiplier': 2},
):
processed_messages = processor.process()
assert processed_messages == (
Result(Status.SUCCESS, output=4, input_record=2),
Result(Status.SUCCESS, output=6, input_record=3),
Result(Status.SUCCESS, output=8, input_record=4),
)