fix: close remaining task 2 review findings
This commit is contained in:
@@ -2,7 +2,8 @@ from sqlalchemy import create_engine, select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from central.app.blocked_products import list_blockers, resolve_product_blockers, retry_due, upsert_blocker
|
||||
from central.app.models import Agent, Base, BlockedProduct, Tenant
|
||||
from central.app.models import Agent, Base, BlockedProduct, Installation, Tenant
|
||||
from central.app.operational_state import blocker_fingerprint
|
||||
|
||||
|
||||
def _session():
|
||||
@@ -48,3 +49,24 @@ def test_same_input_without_retry_schedule_is_cache_hit():
|
||||
|
||||
assert retry_due(row, "v1") is False
|
||||
assert retry_due(row, "v2") is True
|
||||
|
||||
|
||||
def test_authenticated_installations_get_distinct_fingerprints_for_identical_blockers():
|
||||
session, tenant = _session()
|
||||
agent_a = Agent(tenant_id=tenant.id, name="agent-a", token_hash="agent-a".ljust(64, "x"))
|
||||
agent_b = Agent(tenant_id=tenant.id, name="agent-b", token_hash="agent-b".ljust(64, "x"))
|
||||
session.add_all([agent_a, agent_b])
|
||||
session.flush()
|
||||
installation_a = Installation(agent_id=agent_a.id, tenant_id=tenant.id, installation_id="00000000-0000-4000-8000-000000000201", display_name="Store A")
|
||||
installation_b = Installation(agent_id=agent_b.id, tenant_id=tenant.id, installation_id="00000000-0000-4000-8000-000000000202", display_name="Store B")
|
||||
session.add_all([installation_a, installation_b])
|
||||
session.flush()
|
||||
payload = {"tenant": "t", "company": "c", "product_code": "P1", "field": "CFOP", "reason_code": "MISSING", "input_fingerprint": "v1"}
|
||||
|
||||
first = upsert_blocker(session, tenant.id, payload, installation_id=installation_a.id)
|
||||
second = upsert_blocker(session, tenant.id, payload, installation_id=installation_b.id)
|
||||
|
||||
assert first.id != second.id
|
||||
assert first.blocker_fingerprint != second.blocker_fingerprint
|
||||
assert blocker_fingerprint("t", "c", "P1", "CFOP", "MISSING", "v1") == blocker_fingerprint("t", "c", "P1", "CFOP", "MISSING", "v1")
|
||||
assert blocker_fingerprint("t", "c", "P1", "CFOP", "MISSING", "v1", installation_id=installation_a.id) != blocker_fingerprint("t", "c", "P1", "CFOP", "MISSING", "v1", installation_id=installation_b.id)
|
||||
|
||||
@@ -280,3 +280,33 @@ def test_worst_coverage_sort_uses_the_displayed_derived_percentage():
|
||||
assert result["items"][0]["installation_id"] == second.installation_id
|
||||
assert result["items"][0]["fiscal_completion_percent"] == 20
|
||||
assert first.installation_id != second.installation_id
|
||||
|
||||
|
||||
def test_worst_coverage_sort_cannot_disagree_with_one_decimal_display():
|
||||
session_factory = setup_db()
|
||||
with session_factory() as session:
|
||||
_, _, first, first_snapshot = _installation(session, 1, coverage=0)
|
||||
_, _, second, second_snapshot = _installation(session, 2, coverage=0)
|
||||
first_snapshot.total_products = 79
|
||||
first_snapshot.fiscally_complete = 5
|
||||
second_snapshot.total_products = 16
|
||||
second_snapshot.fiscally_complete = 1
|
||||
session.commit()
|
||||
|
||||
result = list_installations(session, sort="worst_coverage", page_size=10, now=NOW)
|
||||
displayed = [item["fiscal_completion_percent"] for item in result["items"]]
|
||||
|
||||
assert displayed == sorted(displayed)
|
||||
assert displayed == [6.3, 6.3]
|
||||
assert {item["installation_id"] for item in result["items"]} == {first.installation_id, second.installation_id}
|
||||
|
||||
|
||||
def test_lowercase_required_blocker_field_reaches_attention_candidates():
|
||||
session_factory = setup_db()
|
||||
with session_factory() as session:
|
||||
tenant, _, installation, _ = _installation(session, 1)
|
||||
blocker = _blocker(session, tenant, product="LOWER", field="cfop", index=120, installation_id=installation.id)
|
||||
|
||||
attention = dashboard_summary(session, now=NOW)["attention_items"]
|
||||
|
||||
assert any(item["link"] == f"/blockers/{blocker.id}" for item in attention)
|
||||
|
||||
Reference in New Issue
Block a user