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