|
15 | 15 | get_version_info,
|
16 | 16 | get_versions_from_manifest,
|
17 | 17 | has_email_provider,
|
| 18 | + is_database_replica_setup, |
18 | 19 | is_enterprise,
|
19 | 20 | is_oss,
|
20 | 21 | is_saas,
|
@@ -204,6 +205,37 @@ def test_get_version__invalid_file_contents__returns_unknown(
|
204 | 205 | assert result == "unknown"
|
205 | 206 |
|
206 | 207 |
|
| 208 | +@pytest.mark.parametrize( |
| 209 | + ["database_names", "expected"], |
| 210 | + [ |
| 211 | + ({"default"}, False), |
| 212 | + ({"default", "another_database_with_'replica'_in_its_name"}, False), |
| 213 | + ({"default", "task_processor"}, False), |
| 214 | + ({"default", "replica_1"}, True), |
| 215 | + ({"default", "replica_1", "replica_2"}, True), |
| 216 | + ({"default", "cross_region_replica_1"}, True), |
| 217 | + ({"default", "replica_1", "cross_region_replica_1"}, True), |
| 218 | + ], |
| 219 | +) |
| 220 | +def test_is_database_replica_setup__tells_whether_any_replica_is_present( |
| 221 | + database_names: list[str], |
| 222 | + expected: bool, |
| 223 | + mocker: MockerFixture, |
| 224 | +) -> None: |
| 225 | + # Given |
| 226 | + is_database_replica_setup.cache_clear() |
| 227 | + mocker.patch( |
| 228 | + "common.core.utils.connections", |
| 229 | + {name: connections["default"] for name in database_names}, |
| 230 | + ) |
| 231 | + |
| 232 | + # When |
| 233 | + result = is_database_replica_setup() |
| 234 | + |
| 235 | + # Then |
| 236 | + assert result is expected |
| 237 | + |
| 238 | + |
207 | 239 | @pytest.mark.django_db(databases="__all__")
|
208 | 240 | def test_using_database_replica__no_replicas__points_to_default(
|
209 | 241 | django_assert_num_queries: DjangoAssertNumQueries,
|
|
0 commit comments