"""Integration tests for GET /transfer/job//products.""" import requests from .helpers import TIMEOUT, create_job, delete_job, url class TestGetTransferJobProducts: """Tests for GET /transfer/job//products.""" def test_returns_product_list(self, qa_base_url, auth_headers, qa_project): """Returns 200 with product snapshot list.""" job = create_job(qa_base_url, auth_headers, qa_project["project_id"]) try: r = requests.get( url(qa_base_url, f"/transfer/job/{job['project_transfer_job_id']}/products"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 200 products = r.json() assert isinstance(products, list) assert len(products) >= 1 assert products[0]["project_transfer_job_id"] == job["project_transfer_job_id"] assert products[0]["release_id"] == qa_project["release_id"] assert "release_name" in products[0] assert "upc" in products[0] assert "display_upc" in products[0] finally: delete_job(qa_base_url, auth_headers, job["project_transfer_job_id"]) def test_includes_soft_deleted_releases(self, qa_base_url, auth_headers, qa_project_with_soft_deleted_release): """Soft-deleted releases are included in the product snapshot.""" project = qa_project_with_soft_deleted_release job = create_job(qa_base_url, auth_headers, project["project_id"]) try: r = requests.get( url(qa_base_url, f"/transfer/job/{job['project_transfer_job_id']}/products"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 200 products = r.json() release_ids = [p["release_id"] for p in products] assert project["release_id"] in release_ids finally: delete_job(qa_base_url, auth_headers, job["project_transfer_job_id"]) def test_nonexistent_job_returns_404(self, qa_base_url, auth_headers): """Returns 404 for a non-existent job.""" r = requests.get( url(qa_base_url, "/transfer/job/999999999/products"), headers=auth_headers, timeout=TIMEOUT, ) assert r.status_code == 404