fix: reconcile and expose failed product cleanup
This commit is contained in:
@@ -356,6 +356,35 @@ def test_archive_version_rejects_failed_cleanup_product_and_status_is_visible(
|
||||
assert restored["status"] == "active"
|
||||
|
||||
|
||||
def test_delete_rejects_failed_cleanup_product_until_restore(product_archive_client):
|
||||
product = create_product(product_archive_client)
|
||||
deleted = product_archive_client.delete(
|
||||
f"/api/products/{product['product_id']}", headers=orders_auth_header()
|
||||
).json()
|
||||
store = product_archive_client.product_store
|
||||
purge_after = datetime.fromisoformat(deleted["purge_after"])
|
||||
store.claim_product_purge(deleted["product_id"], purge_after)
|
||||
store.fail_product_purge(deleted["product_id"], now=purge_after)
|
||||
|
||||
rejected = product_archive_client.delete(
|
||||
f"/api/products/{deleted['product_id']}", headers=orders_auth_header()
|
||||
)
|
||||
assert rejected.status_code == 409
|
||||
assert store.get_product(deleted["product_id"]).status == "failed_cleanup"
|
||||
|
||||
restored = product_archive_client.post(
|
||||
f"/api/products/{deleted['product_id']}/restore", headers=orders_auth_header()
|
||||
)
|
||||
assert restored.status_code == 200
|
||||
assert restored.json()["status"] == "active"
|
||||
|
||||
soft_deleted = product_archive_client.delete(
|
||||
f"/api/products/{deleted['product_id']}", headers=orders_auth_header()
|
||||
)
|
||||
assert soft_deleted.status_code == 200
|
||||
assert soft_deleted.json()["status"] == "pending_cleanup"
|
||||
|
||||
|
||||
def test_archive_failure_during_final_move_removes_staging_files(product_archive_client, prepared_wordcloud_job, monkeypatch):
|
||||
product = create_product(product_archive_client)
|
||||
service = service_app._product_archive_service()
|
||||
|
||||
Reference in New Issue
Block a user