1+ from functools import partial
12from typing import Generator
23
34import prometheus_client
45import pytest
56from prometheus_client .metrics import MetricWrapperBase
67from pyfakefs .fake_filesystem import FakeFilesystem
8+ from pytest_django .fixtures import SettingsWrapper
79
8- from common .test_tools .types import AssertMetricFixture , Snapshot , SnapshotFixture
10+ from common .test_tools .types import (
11+ AssertMetricFixture ,
12+ RunTasksFixture ,
13+ Snapshot ,
14+ SnapshotFixture ,
15+ )
16+ from task_processor .task_run_method import TaskRunMethod
917
1018
1119def pytest_addoption (parser : pytest .Parser ) -> None :
@@ -68,6 +76,16 @@ def enterprise_mode(fs: FakeFilesystem) -> Generator[None, None, None]:
6876 is_enterprise .cache_clear ()
6977
7078
79+ @pytest .fixture ()
80+ def task_processor_mode (settings : SettingsWrapper ) -> None :
81+ settings .TASK_PROCESSOR_MODE = True
82+ # The setting is supposed to be set before the metrics module is imported,
83+ # so reload it
84+ from common .prometheus .utils import reload_metrics
85+
86+ reload_metrics ("task_processor.metrics" )
87+
88+
7189@pytest .fixture (autouse = True )
7290def flagsmith_markers_marked (
7391 request : pytest .FixtureRequest ,
@@ -77,6 +95,21 @@ def flagsmith_markers_marked(
7795 request .getfixturevalue ("saas_mode" )
7896 if marker .name == "enterprise_mode" :
7997 request .getfixturevalue ("enterprise_mode" )
98+ if marker .name == "task_processor_mode" :
99+ request .getfixturevalue ("task_processor_mode" )
100+
101+
102+ @pytest .fixture (name = "run_tasks" )
103+ def run_tasks_impl (
104+ settings : SettingsWrapper ,
105+ transactional_db : None ,
106+ task_processor_mode : None ,
107+ ) -> RunTasksFixture :
108+ settings .TASK_RUN_METHOD = TaskRunMethod .TASK_PROCESSOR
109+
110+ from task_processor .processor import run_tasks
111+
112+ return partial (run_tasks , database = "default" )
80113
81114
82115@pytest .fixture
0 commit comments