44from django .apps import apps
55from django .conf import settings
66from django .db .models import Model
7+ from pytest_django .fixtures import SettingsWrapper
78from pytest_mock import MockerFixture
89
910from task_processor import routers
1011
1112
13+ @pytest .mark .parametrize (
14+ "given_settings, expected" ,
15+ [
16+ ({"TASK_PROCESSOR_DATABASES" : ["task_processor" ]}, True ),
17+ ({"TASK_PROCESSOR_DATABASES" : ["default" , "task_processor" ]}, True ),
18+ ({"TASK_PROCESSOR_DATABASES" : ["default" ]}, False ),
19+ ],
20+ )
21+ def test_TaskProcessorRouter__checks_whether_is_enabled (
22+ settings : SettingsWrapper ,
23+ given_settings : dict [str , None | str ],
24+ expected : bool ,
25+ ) -> None :
26+ # Given
27+ for key , value in given_settings .items ():
28+ setattr (settings , key , value )
29+
30+ # When
31+ router = routers .TaskProcessorRouter ()
32+
33+ # Then
34+ assert router .is_enabled is expected
35+
36+
1237@pytest .mark .parametrize ("model" , apps .get_app_config ("task_processor" ).get_models ())
1338def test_TaskProcessorRouter__enabled__routes_queries_to_task_processor_database (
1439 mocker : MockerFixture ,
1540 model : type [Model ],
1641) -> None :
1742 # Given
18- router = routers .TaskProcessorRouter ( )
43+ mocker . patch . object ( routers .TaskProcessorRouter , "is_enabled" , new = True )
1944
2045 # When
46+ router = routers .TaskProcessorRouter ()
2147 read_database = router .db_for_read (model )
2248 write_database = router .db_for_write (model )
2349
2450 # Then
2551 assert read_database == write_database == "task_processor"
2652
2753
54+ @pytest .mark .parametrize ("model" , apps .get_app_config ("task_processor" ).get_models ())
55+ def test_TaskProcessorRouter__disabled__does_not_route_database_queries (
56+ mocker : MockerFixture ,
57+ model : type [Model ],
58+ ) -> None :
59+ # Given
60+ mocker .patch .object (routers .TaskProcessorRouter , "is_enabled" , new = False )
61+
62+ # When
63+ router = routers .TaskProcessorRouter ()
64+ read_database = router .db_for_read (model )
65+ write_database = router .db_for_write (model )
66+ allows_relation = router .allow_relation (model (), model ())
67+ allows_migrate = {
68+ router .allow_migrate ("default" , app_label = "task_processor" ),
69+ router .allow_migrate ("task_processor" , app_label = "task_processor" ),
70+ router .allow_migrate ("other" , app_label = "task_processor" ),
71+ router .allow_migrate ("task_processor" , app_label = "other" ),
72+ }
73+
74+ # Then
75+ assert read_database is None
76+ assert write_database is None
77+ assert allows_relation is None
78+ assert allows_migrate == {None }
79+
80+
2881@pytest .mark .parametrize (
2982 "model1, model2, expected" ,
3083 [ # True if both models are from task_processor app
@@ -45,9 +98,10 @@ def test_TaskProcessorRouter__allow_relation__returns_according_to_given_models(
4598 expected : bool ,
4699) -> None :
47100 # Given
48- router = routers .TaskProcessorRouter ( )
101+ mocker . patch . object ( routers .TaskProcessorRouter , "is_enabled" , new = True )
49102
50103 # When
104+ router = routers .TaskProcessorRouter ()
51105 allow_relation = router .allow_relation (model1 (), model2 ())
52106
53107 # Then
@@ -72,9 +126,10 @@ def test_TaskProcessorRouter__allow_migrate__applies_to_both_databases(
72126 mocker : MockerFixture ,
73127) -> None :
74128 # Given
75- router = routers .TaskProcessorRouter ( )
129+ mocker . patch . object ( routers .TaskProcessorRouter , "is_enabled" , new = True )
76130
77131 # When
132+ router = routers .TaskProcessorRouter ()
78133 allow_migrate = router .allow_migrate (database , app_label )
79134
80135 # Then
0 commit comments