perf: optimize revenue forecast effective document links
This commit is contained in:
102
tests/test_revenue_forecast_effective_links_performance.py
Normal file
102
tests/test_revenue_forecast_effective_links_performance.py
Normal file
@@ -0,0 +1,102 @@
|
||||
from contextlib import nullcontext
|
||||
from datetime import date
|
||||
|
||||
import app.document_reconciliation_service as document_service
|
||||
import app.revenue_forecast_service as forecast_service
|
||||
|
||||
|
||||
class _Result:
|
||||
def __init__(self, rows=(), scalar_value=False):
|
||||
self.rows = list(rows)
|
||||
self.scalar_value = scalar_value
|
||||
|
||||
def mappings(self):
|
||||
return self
|
||||
|
||||
def all(self):
|
||||
return self.rows
|
||||
|
||||
def scalar(self):
|
||||
return self.scalar_value
|
||||
|
||||
|
||||
class _Connection:
|
||||
def __init__(self, *, v2=False):
|
||||
self.v2 = v2
|
||||
self.statements = []
|
||||
|
||||
def execute(self, statement, params=None):
|
||||
sql = str(statement)
|
||||
self.statements.append(sql)
|
||||
if "to_regclass" in sql:
|
||||
return _Result(scalar_value=self.v2)
|
||||
return _Result()
|
||||
|
||||
|
||||
class _Engine:
|
||||
def __init__(self, connection):
|
||||
self.connection = connection
|
||||
|
||||
def begin(self):
|
||||
return nullcontext(self.connection)
|
||||
|
||||
|
||||
def test_forecast_prepares_effective_links_once(monkeypatch):
|
||||
connection = _Connection()
|
||||
calls = []
|
||||
flags = []
|
||||
monkeypatch.setattr(forecast_service, "engine", _Engine(connection))
|
||||
monkeypatch.setattr(forecast_service, "ensure_revenue_forecast_schema", lambda: None)
|
||||
monkeypatch.setattr(forecast_service, "get_sales_target", lambda **kwargs: {"target_amount": 0})
|
||||
monkeypatch.setattr(document_service, "prepare_effective_document_links", lambda conn: calls.append(conn) or "_effective_document_links")
|
||||
monkeypatch.setattr(forecast_service, "_historical_stage_rates", lambda conn: {})
|
||||
|
||||
def realised(conn, **kwargs):
|
||||
flags.append(kwargs["effective_links_prepared"])
|
||||
return {"amount": 0.0, "count": 0, "opportunity_ids": set(), "items": []}
|
||||
|
||||
def realised_ids(conn, **kwargs):
|
||||
flags.append(kwargs["effective_links_prepared"])
|
||||
return set()
|
||||
|
||||
monkeypatch.setattr(forecast_service, "_realised_for_period", realised)
|
||||
monkeypatch.setattr(forecast_service, "_already_realised_ids", realised_ids)
|
||||
|
||||
forecast_service.get_revenue_forecast()
|
||||
|
||||
assert calls == [connection]
|
||||
assert flags == [True, True]
|
||||
|
||||
|
||||
def test_helpers_still_prepare_when_called_in_isolation(monkeypatch):
|
||||
connection = _Connection()
|
||||
calls = []
|
||||
monkeypatch.setattr(document_service, "prepare_effective_document_links", lambda conn: calls.append(conn))
|
||||
|
||||
forecast_service._realised_for_period(
|
||||
connection, metric="invoiced", period_start=date(2026, 8, 1), period_end=date(2026, 8, 31),
|
||||
)
|
||||
forecast_service._already_realised_ids(connection, metric="invoiced")
|
||||
|
||||
assert calls == [connection, connection]
|
||||
|
||||
|
||||
def test_set_based_preparation_has_constant_statement_count_and_no_resolver(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
document_service, "resolve_document_links",
|
||||
lambda *args, **kwargs: (_ for _ in ()).throw(AssertionError("per-opportunity resolver called")),
|
||||
)
|
||||
for v2 in (False, True):
|
||||
connection = _Connection(v2=v2)
|
||||
document_service.prepare_effective_document_links(connection)
|
||||
assert len(connection.statements) == 4
|
||||
assert sum("INSERT INTO _effective_document_links" in sql for sql in connection.statements) == 1
|
||||
|
||||
|
||||
def test_set_based_legacy_relationship_case_matches_resolver_vocabulary():
|
||||
source = document_service.prepare_effective_document_links.__code__.co_consts
|
||||
sql_fragments = " ".join(value for value in source if isinstance(value, str))
|
||||
for relationship in ("REMOVED", "PRIMARY", "HISTORICAL", "SECONDARY"):
|
||||
assert relationship in sql_fragments
|
||||
assert "NOT EXISTS" in sql_fragments
|
||||
assert "l.ended_at IS NULL" in sql_fragments
|
||||
Reference in New Issue
Block a user