@@ -40,9 +40,21 @@ def info(self, section):
4040
4141@pytest .fixture
4242def init_arq (sentry_init ):
43- def inner (functions_ = None , cron_jobs_ = None , allow_abort_jobs_ = False ):
44- functions_ = functions_ or []
45- cron_jobs_ = cron_jobs_ or []
43+ def inner (
44+ cls_functions = None ,
45+ cls_cron_jobs = None ,
46+ kw_functions = None ,
47+ kw_cron_jobs = None ,
48+ allow_abort_jobs_ = False ,
49+ ):
50+ cls_functions = cls_functions or []
51+ cls_cron_jobs = cls_cron_jobs or []
52+
53+ kwargs = {}
54+ if kw_functions is not None :
55+ kwargs ["functions" ] = kw_functions
56+ if kw_cron_jobs is not None :
57+ kwargs ["cron_jobs" ] = kw_cron_jobs
4658
4759 sentry_init (
4860 integrations = [ArqIntegration ()],
@@ -55,12 +67,17 @@ def inner(functions_=None, cron_jobs_=None, allow_abort_jobs_=False):
5567 pool = ArqRedis (pool_or_conn = server .connection_pool )
5668
5769 class WorkerSettings :
58- functions = functions_
59- cron_jobs = cron_jobs_
70+ functions = cls_functions
71+ cron_jobs = cls_cron_jobs
6072 redis_pool = pool
6173 allow_abort_jobs = allow_abort_jobs_
6274
63- worker = arq .worker .create_worker (WorkerSettings )
75+ if not WorkerSettings .functions :
76+ del WorkerSettings .functions
77+ if not WorkerSettings .cron_jobs :
78+ del WorkerSettings .cron_jobs
79+
80+ worker = arq .worker .create_worker (WorkerSettings , ** kwargs )
6481
6582 return pool , worker
6683
@@ -119,9 +136,12 @@ async def retry_job(ctx):
119136 assert event ["extra" ]["arq-job" ]["retry" ] == 2
120137
121138
139+ @pytest .mark .parametrize (
140+ "source" , [("cls_functions" , "cls_cron_jobs" ), ("kw_functions" , "kw_cron_jobs" )]
141+ )
122142@pytest .mark .parametrize ("job_fails" , [True , False ], ids = ["error" , "success" ])
123143@pytest .mark .asyncio
124- async def test_job_transaction (capture_events , init_arq , job_fails ):
144+ async def test_job_transaction (capture_events , init_arq , source , job_fails ):
125145 async def division (_ , a , b = 0 ):
126146 return a / b
127147
@@ -132,7 +152,8 @@ async def division(_, a, b=0):
132152
133153 cron_job = cron (cron_func , minute = 0 , run_at_startup = True )
134154
135- pool , worker = init_arq (functions_ = [division ], cron_jobs_ = [cron_job ])
155+ functions_key , cron_jobs_key = source
156+ pool , worker = init_arq (** {functions_key : [division ], cron_jobs_key : [cron_job ]})
136157
137158 events = capture_events ()
138159
@@ -192,12 +213,13 @@ async def division(_, a, b=0):
192213 assert cron_extra ["retry" ] == 1
193214
194215
216+ @pytest .mark .parametrize ("source" , ["cls_functions" , "kw_functions" ])
195217@pytest .mark .asyncio
196- async def test_enqueue_job (capture_events , init_arq ):
218+ async def test_enqueue_job (capture_events , init_arq , source ):
197219 async def dummy_job (_ ):
198220 pass
199221
200- pool , _ = init_arq ([dummy_job ])
222+ pool , _ = init_arq (** { source : [dummy_job ]} )
201223
202224 events = capture_events ()
203225
0 commit comments