11import asyncio
2+ import typing
23from datetime import datetime , timedelta , timezone
34from typing import Any
45from unittest .mock import MagicMock
56
67import pytest
8+ from faststream .types import SendableMessage
79from faststream .utils .functions import timeout_scope
810from freezegun import freeze_time
9- from taskiq import AsyncBroker , TaskiqScheduler
11+ from taskiq import AsyncBroker
1012from taskiq .cli .scheduler .args import SchedulerArgs
1113from taskiq .cli .scheduler .run import run_scheduler
1214from taskiq .schedule_sources import LabelScheduleSource
1315
1416from taskiq_faststream import BrokerWrapper , StreamScheduler
17+ from tests import messages
1518
1619
1720@pytest .mark .anyio
@@ -54,7 +57,7 @@ async def handler(msg: str) -> None:
5457 task = asyncio .create_task (
5558 run_scheduler (
5659 SchedulerArgs (
57- scheduler = TaskiqScheduler (
60+ scheduler = StreamScheduler (
5861 broker = taskiq_broker ,
5962 sources = [LabelScheduleSource (taskiq_broker )],
6063 ),
@@ -69,24 +72,44 @@ async def handler(msg: str) -> None:
6972 mock .assert_called_once_with ("Hi!" )
7073 task .cancel ()
7174
75+ @pytest .mark .parametrize (
76+ "msg" ,
77+ [
78+ messages .message , # regular msg
79+ messages .sync_callable_msg , # sync callable
80+ messages .async_callable_msg , # async callable
81+ messages .sync_generator_msg , # sync generator
82+ messages .async_generator_msg , # async generator
83+ messages .sync_callable_class_message , # sync callable class
84+ messages .async_callable_class_message , # async callable class
85+ ],
86+ )
7287 async def test_task_multiple_schedules_by_cron (
7388 self ,
7489 subject : str ,
7590 broker : Any ,
7691 event : asyncio .Event ,
92+ msg : typing .Union [
93+ None ,
94+ SendableMessage ,
95+ typing .Callable [[], SendableMessage ],
96+ typing .Callable [[], typing .Awaitable [SendableMessage ]],
97+ typing .Callable [[], typing .Generator [SendableMessage , None , None ]],
98+ typing .Callable [[], typing .AsyncGenerator [SendableMessage , None ]],
99+ ],
77100 ) -> None :
78101 """Test cron runs twice via StreamScheduler."""
79102 received_message = []
80103
81104 @broker .subscriber (subject )
82- async def handler (msg : str ) -> None :
83- received_message .append (msg )
105+ async def handler (message : str ) -> None :
106+ received_message .append (message )
84107 event .set ()
85108
86109 taskiq_broker = self .build_taskiq_broker (broker )
87110
88111 taskiq_broker .task (
89- "Hi!" ,
112+ msg ,
90113 ** {self .subj_name : subject },
91114 schedule = [
92115 {
@@ -116,4 +139,6 @@ async def handler(msg: str) -> None:
116139
117140 task .cancel ()
118141
119- assert received_message == ["Hi!" , "Hi!" ], received_message
142+ assert received_message == [messages .message , messages .message ], (
143+ received_message
144+ )
0 commit comments