refactor(db)!: finalize pooled WNDB v2 migration
This commit is contained in:
@@ -5,7 +5,9 @@ from app.infra.db.project_routing import (
|
||||
ActiveProjectRouting,
|
||||
activate_project_routing,
|
||||
get_active_project_routing,
|
||||
get_project_database_name,
|
||||
get_project_pgconn_string,
|
||||
get_project_template_database_name,
|
||||
get_project_timescale_pgconn_string,
|
||||
)
|
||||
|
||||
@@ -35,9 +37,16 @@ def test_project_database_uses_exact_routing_dsn_for_project_code() -> None:
|
||||
)
|
||||
|
||||
|
||||
def test_business_template_keeps_server_and_timescale_ignores_legacy_db_name() -> None:
|
||||
def test_business_template_keeps_server_and_timescale_ignores_legacy_db_name(
|
||||
monkeypatch,
|
||||
) -> None:
|
||||
monkeypatch.setattr(
|
||||
"app.infra.db.project_routing.settings.WNDB_TEMPLATE_DB_NAME",
|
||||
"tjwater_v2_template",
|
||||
)
|
||||
with activate_project_routing(_routing()):
|
||||
business = conninfo_to_dict(get_project_pgconn_string("project_a_template"))
|
||||
template_name = get_project_template_database_name("project_a")
|
||||
business = conninfo_to_dict(get_project_pgconn_string(template_name))
|
||||
timescale = conninfo_to_dict(
|
||||
get_project_timescale_pgconn_string("temporary_scheme")
|
||||
)
|
||||
@@ -45,7 +54,7 @@ def test_business_template_keeps_server_and_timescale_ignores_legacy_db_name() -
|
||||
assert business == {
|
||||
"user": "biz_user",
|
||||
"password": "biz_password",
|
||||
"dbname": "project_a_template",
|
||||
"dbname": "tjwater_v2_template",
|
||||
"host": "biz.example",
|
||||
"port": "5432",
|
||||
"sslmode": "require",
|
||||
@@ -60,6 +69,28 @@ def test_business_template_keeps_server_and_timescale_ignores_legacy_db_name() -
|
||||
}
|
||||
|
||||
|
||||
def test_project_code_resolves_to_physical_business_database(monkeypatch) -> None:
|
||||
monkeypatch.setattr(
|
||||
"app.infra.db.project_routing.settings.WNDB_TEMPLATE_DB_NAME",
|
||||
"tjwater_v2_template",
|
||||
)
|
||||
with activate_project_routing(_routing()):
|
||||
assert get_project_database_name("project_a") == "biz_database"
|
||||
assert get_project_database_name("temporary_run") == "temporary_run"
|
||||
assert get_project_template_database_name("project_a") == "tjwater_v2_template"
|
||||
|
||||
|
||||
def test_template_falls_back_to_config_outside_project_routing(monkeypatch) -> None:
|
||||
monkeypatch.setattr(
|
||||
"app.infra.db.project_routing.settings.WNDB_TEMPLATE_DB_NAME",
|
||||
"tjwater_v2_template",
|
||||
)
|
||||
|
||||
assert get_project_template_database_name("ignored-project-code") == (
|
||||
"tjwater_v2_template"
|
||||
)
|
||||
|
||||
|
||||
def test_project_routing_is_nested_and_request_local() -> None:
|
||||
first = _routing("project_a")
|
||||
second = _routing("project_b")
|
||||
|
||||
Reference in New Issue
Block a user