Add structured workflow result models for video and document uploads; update client methods and examples

This commit is contained in:
claudi 2026-04-07 10:36:41 +02:00
parent 6d54c5900c
commit 00539b4fb2
5 changed files with 98 additions and 26 deletions

View file

@ -36,7 +36,14 @@ from ebay_client.generated.notification.models import (
UpdateSubscriptionRequest,
)
from ebay_client.inventory.client import InventoryClient
from ebay_client.media.client import CreatedMediaResource, MediaClient, extract_resource_id, guess_media_content_type
from ebay_client.media.client import (
CreatedMediaResource,
DocumentWorkflowResult,
MediaClient,
VideoWorkflowResult,
extract_resource_id,
guess_media_content_type,
)
from ebay_client.notification.client import NotificationClient
@ -593,7 +600,10 @@ def test_media_create_upload_and_wait_video_orchestrates_flow(monkeypatch) -> No
poll_interval_seconds=0.0,
)
assert result.videoId == "VIDEO-9"
assert isinstance(result, VideoWorkflowResult)
assert result.video_id == "VIDEO-9"
assert result.video.videoId == "VIDEO-9"
assert result.created.resource_id == "VIDEO-9"
assert calls[0][0] == "create_video"
assert calls[1] == (
"upload_video",
@ -636,7 +646,11 @@ def test_media_create_upload_and_wait_document_orchestrates_flow(monkeypatch) ->
poll_interval_seconds=0.0,
)
assert result.documentStatus == "ACCEPTED"
assert isinstance(result, DocumentWorkflowResult)
assert result.document_id == "DOC-9"
assert result.created.documentId == "DOC-9"
assert result.uploaded is not None and result.uploaded.documentStatus == "SUBMITTED"
assert result.document.documentStatus == "ACCEPTED"
assert calls[0][0] == "create_document"
assert calls[1] == (
"upload_document",
@ -679,7 +693,11 @@ def test_media_create_document_from_url_and_wait_orchestrates_flow(monkeypatch)
poll_interval_seconds=0.0,
)
assert result.documentStatus == "ACCEPTED"
assert isinstance(result, DocumentWorkflowResult)
assert result.document_id == "DOC-10"
assert result.created.documentId == "DOC-10"
assert result.uploaded is None
assert result.document.documentStatus == "ACCEPTED"
assert calls[0][0] == "create_document_from_url"
assert calls[1] == (
"wait_for_document",
@ -788,7 +806,12 @@ def test_media_create_upload_and_wait_document_from_path_reads_file_and_delegate
client,
"create_upload_and_wait_document",
lambda payload, **kwargs: captured.update({"payload": payload, **kwargs})
or DocumentResponse(documentId="DOC-77", documentStatus="ACCEPTED"),
or DocumentWorkflowResult(
created=CreateDocumentResponse(documentId="DOC-77", documentStatus="PENDING_UPLOAD"),
uploaded=DocumentResponse(documentId="DOC-77", documentStatus="SUBMITTED"),
document=DocumentResponse(documentId="DOC-77", documentStatus="ACCEPTED"),
document_id="DOC-77",
),
)
result = client.create_upload_and_wait_document_from_path(
@ -797,7 +820,8 @@ def test_media_create_upload_and_wait_document_from_path_reads_file_and_delegate
poll_interval_seconds=0.0,
)
assert result.documentStatus == "ACCEPTED"
assert isinstance(result, DocumentWorkflowResult)
assert result.document.documentStatus == "ACCEPTED"
assert captured["file_name"] == "guide.pdf"
assert captured["content"] == b"%PDF-1.7"
assert captured["content_type"] == "application/pdf"
@ -815,7 +839,11 @@ def test_media_create_upload_and_wait_video_from_path_builds_payload_and_delegat
client,
"create_upload_and_wait_video",
lambda payload, **kwargs: captured.update({"payload": payload, **kwargs})
or Video(videoId="VIDEO-88", status="LIVE"),
or VideoWorkflowResult(
created=CreatedMediaResource(resource_id="VIDEO-88"),
video=Video(videoId="VIDEO-88", status="LIVE"),
video_id="VIDEO-88",
),
)
result = client.create_upload_and_wait_video_from_path(
@ -824,7 +852,8 @@ def test_media_create_upload_and_wait_video_from_path_builds_payload_and_delegat
poll_interval_seconds=0.0,
)
assert result.videoId == "VIDEO-88"
assert isinstance(result, VideoWorkflowResult)
assert result.video.videoId == "VIDEO-88"
payload = captured["payload"]
assert isinstance(payload, CreateVideoRequest)
assert payload.title == "demo"