75 lines
1.9 KiB
Python
75 lines
1.9 KiB
Python
import pytest
|
|
|
|
from zvk.event.consumer import event_consumer
|
|
from zvk.event.event import Event
|
|
from zvk.event.queue import EventQueue
|
|
from zvk.util.zlogging import logger
|
|
|
|
|
|
@event_consumer(consumes=['event1'])
|
|
async def consumer_simple(counter):
|
|
logger.debug('simple_consumer')
|
|
counter[0] += 1
|
|
|
|
|
|
@event_consumer(consumes=['event1'])
|
|
async def consumer_defaults(counter, default_inc=1):
|
|
logger.debug('simple_consumer_with_defaults')
|
|
counter[0] += default_inc
|
|
|
|
|
|
@event_consumer(consumes=['event1'])
|
|
async def consumer_defaults_overridden(counter, inc=100):
|
|
logger.debug('simple_consumer_with_overridden_defaults')
|
|
counter[0] += inc
|
|
|
|
|
|
@event_consumer(consumes=['event1'])
|
|
async def consumer_producer(counter):
|
|
logger.debug('consumer_producer')
|
|
counter[0] += 1
|
|
yield Event('event2')
|
|
|
|
|
|
@event_consumer(consumes=['event2'])
|
|
async def consumer_new_event(counter):
|
|
logger.debug('another_simple_consumer')
|
|
counter[0] += 1
|
|
|
|
yield Event('event3', new_inc=1)
|
|
|
|
|
|
@event_consumer(consumes=['event3'])
|
|
async def consumer_finisher(counter, new_inc):
|
|
logger.debug('finisher')
|
|
counter[0] += new_inc
|
|
|
|
# await event_queue.omae_wa_mou_shindeiru()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_queue():
|
|
event_queue = EventQueue()
|
|
|
|
counter = [0]
|
|
|
|
event_queue.register_consumer(consumer_simple)
|
|
event_queue.register_consumer(consumer_defaults)
|
|
event_queue.register_consumer(consumer_defaults_overridden)
|
|
event_queue.register_consumer(consumer_producer)
|
|
event_queue.register_consumer(consumer_new_event)
|
|
event_queue.register_consumer(consumer_finisher)
|
|
|
|
starting_events = [Event('event1', counter=counter, inc=1)]
|
|
|
|
await event_queue.run(starting_events)
|
|
assert counter[0] == 6
|
|
|
|
await event_queue.run(starting_events)
|
|
await event_queue.run(starting_events)
|
|
assert counter[0] == 18
|
|
|
|
event_queue.deregister_consumer(consumer_producer)
|
|
await event_queue.run(starting_events)
|
|
assert counter[0] == 21
|