mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
A rate-limited HubSpot write is retried before succeeding 🟥
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
049475ec96
commit
7e5dc1722e
1 changed files with 23 additions and 0 deletions
|
|
@ -292,3 +292,26 @@ def test_run_raises_a_write_back_error_scrubbed_of_the_hubspot_response_body(
|
|||
assert "VALIDATION_ERROR" in str(exc_info.value)
|
||||
assert "corr-abc-123" in str(exc_info.value)
|
||||
assert "Invalid value" not in rendered_traceback
|
||||
|
||||
|
||||
def test_run_retries_a_rate_limited_hubspot_write_before_succeeding(
|
||||
orchestrator: AbriLogJobOrchestrator,
|
||||
mock_session: MagicMock,
|
||||
sdk_client: MagicMock,
|
||||
deal_database: FakeDealDatabase,
|
||||
) -> None:
|
||||
# Arrange
|
||||
mock_session.post.return_value.content = _load_fixture(
|
||||
"abri_relay_logjob_success_response.xml"
|
||||
)
|
||||
rate_limited = DealsApiException(status=429, reason="Too Many Requests")
|
||||
rate_limited.headers = {"x-hubspot-ratelimit-interval-milliseconds": "0"}
|
||||
sdk_client.crm.deals.basic_api.update.side_effect = [rate_limited, MagicMock()]
|
||||
|
||||
# Act
|
||||
result = orchestrator.run(BOOKING)
|
||||
|
||||
# Assert
|
||||
assert result == LogJobSummary(deal_id=DEAL_ID, job_no="AD0226519")
|
||||
assert sdk_client.crm.deals.basic_api.update.call_count == 2
|
||||
assert deal_database.recorded_job_nos == [(DEAL_ID, "AD0226519")]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue