Skip to content

Commit a6b54fb

Browse files
committed
Improve test coverage
1 parent 0bb02eb commit a6b54fb

File tree

3 files changed

+66
-7
lines changed

3 files changed

+66
-7
lines changed

src/task_processor/apps.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,8 @@ def _validate_database_settings(self) -> None:
3939
"DATABASES must include 'task_processor' when using a separate task processor database."
4040
)
4141

42-
if (
43-
"task_processor.routers.TaskProcessorRouter"
44-
not in settings.DATABASE_ROUTERS
45-
):
42+
router_name = "task_processor.routers.TaskProcessorRouter"
43+
if router_name not in settings.DATABASE_ROUTERS:
4644
raise ImproperlyConfigured(
4745
"DATABASE_ROUTERS must include 'task_processor.routers.TaskProcessorRouter' "
4846
"when using a separate task processor database."

tests/unit/task_processor/test_unit_task_processor_apps.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,52 @@
66
from pytest_mock import MockerFixture
77

88
from task_processor import apps
9+
from task_processor.health import TaskProcessorHealthCheckBackend
10+
from task_processor.task_run_method import TaskRunMethod
11+
12+
13+
def test_skips_validation_if_task_run_method_is_not_task_processor(
14+
mocker: MockerFixture,
15+
settings: SettingsWrapper,
16+
) -> None:
17+
# Given
18+
settings.TASK_RUN_METHOD = TaskRunMethod.SYNCHRONOUSLY
19+
task_processor_app = mocker.Mock()
20+
21+
# When
22+
apps.TaskProcessorAppConfig.ready(task_processor_app)
23+
24+
# Then
25+
task_processor_app._validate_database_settings.assert_not_called()
26+
task_processor_app._register_health_check.assert_not_called()
27+
28+
29+
@pytest.mark.parametrize(
30+
"enabled, expected_call",
31+
[
32+
(True, ((TaskProcessorHealthCheckBackend,), {})),
33+
(False, None),
34+
],
35+
)
36+
def test_registers_health_check_if_enabled(
37+
enabled: bool,
38+
mocker: MockerFixture,
39+
expected_call: tuple[typing.Any, ...],
40+
settings: SettingsWrapper,
41+
) -> None:
42+
# Given
43+
settings.TASK_RUN_METHOD = TaskRunMethod.TASK_PROCESSOR
44+
settings.ENABLE_TASK_PROCESSOR_HEALTH_CHECK = enabled
45+
plugin_dir = mocker.patch.object(apps, "plugin_dir")
46+
task_processor_app = mocker.Mock()
47+
48+
# When
49+
apps.TaskProcessorAppConfig.ready(task_processor_app)
50+
apps.TaskProcessorAppConfig._register_health_check(task_processor_app)
51+
52+
# Then
53+
task_processor_app._register_health_check.assert_called_once_with()
54+
assert plugin_dir.register.call_args == expected_call
955

1056

1157
@pytest.mark.parametrize(

tests/unit/task_processor/test_unit_task_processor_routers.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
@pytest.mark.parametrize("model", apps.get_app_config("task_processor").get_models())
13-
def test_TaskProcessorRouter__enabled__routes_queries_to_task_processor_database(
13+
def test_TaskProcessorRouter_routes_queries_to_task_processor_database(
1414
mocker: MockerFixture,
1515
model: type[Model],
1616
) -> None:
@@ -25,6 +25,21 @@ def test_TaskProcessorRouter__enabled__routes_queries_to_task_processor_database
2525
assert read_database == write_database == "task_processor"
2626

2727

28+
def test_TaskProcessorRouter_does_not_affect_non_task_processor_models(
29+
mocker: MockerFixture,
30+
) -> None:
31+
# Given
32+
model = apps.get_model(settings.AUTH_USER_MODEL)
33+
router = routers.TaskProcessorRouter()
34+
35+
# When
36+
read_database = router.db_for_read(model)
37+
write_database = router.db_for_write(model)
38+
39+
# Then
40+
assert read_database is write_database is None
41+
42+
2843
@pytest.mark.parametrize(
2944
"model1, model2, expected",
3045
[ # True if both models are from task_processor app
@@ -38,7 +53,7 @@ def test_TaskProcessorRouter__enabled__routes_queries_to_task_processor_database
3853
for model in apps.get_app_config("task_processor").get_models()
3954
],
4055
)
41-
def test_TaskProcessorRouter__allow_relation__returns_according_to_given_models(
56+
def test_TaskProcessorRouter_allows_relation_among_task_processor_models(
4257
mocker: MockerFixture,
4358
model1: type[Model],
4459
model2: type[Model],
@@ -65,7 +80,7 @@ def test_TaskProcessorRouter__allow_relation__returns_according_to_given_models(
6580
("other", "other", None),
6681
],
6782
)
68-
def test_TaskProcessorRouter__allow_migrate__applies_to_both_databases(
83+
def test_TaskProcessorRouter_applies_migrations_to_both_databases(
6984
app_label: str,
7085
database: str,
7186
expected: bool,

0 commit comments

Comments
 (0)