Skip to content

Commit 8254ecb

Browse files
Add tests of Add Image tool
Assisted-by: Codex
1 parent d705f48 commit 8254ecb

4 files changed

Lines changed: 486 additions & 0 deletions

File tree

tests/graphics_test_helpers.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,26 @@ def make_pdf_file(file_id: str, name: str = "example.pdf") -> PdfRestFile:
4040
)
4141

4242

43+
def make_image_file(
44+
file_id: str,
45+
mime_type: str = "image/png",
46+
name: str = "example.png",
47+
) -> PdfRestFile:
48+
return PdfRestFile.model_validate(
49+
{
50+
"id": file_id,
51+
"name": name,
52+
"url": f"https://api.pdfrest.com/resource/{file_id}",
53+
"type": mime_type,
54+
"size": 2048,
55+
"modified": datetime(2024, 1, 1, tzinfo=timezone.utc)
56+
.isoformat()
57+
.replace("+00:00", "Z"),
58+
"scheduledDeletionTimeUtc": None,
59+
}
60+
)
61+
62+
4363
def assert_conversion_payload(
4464
payload: dict[str, Any],
4565
expected: dict[str, Any],
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
from __future__ import annotations
2+
3+
import pytest
4+
5+
from pdfrest import AsyncPdfRestClient, PdfRestApiError, PdfRestClient
6+
from pdfrest.models import PdfRestFile
7+
8+
from ..resources import get_test_resource_path
9+
10+
11+
@pytest.fixture(scope="module")
12+
def uploaded_pdf_for_image_addition(
13+
pdfrest_api_key: str,
14+
pdfrest_live_base_url: str,
15+
) -> PdfRestFile:
16+
resource = get_test_resource_path("report.pdf")
17+
with PdfRestClient(
18+
api_key=pdfrest_api_key,
19+
base_url=pdfrest_live_base_url,
20+
) as client:
21+
return client.files.create_from_paths([resource])[0]
22+
23+
24+
@pytest.fixture(scope="module")
25+
def uploaded_image(
26+
pdfrest_api_key: str,
27+
pdfrest_live_base_url: str,
28+
) -> PdfRestFile:
29+
resource = get_test_resource_path("logo.png")
30+
with PdfRestClient(
31+
api_key=pdfrest_api_key,
32+
base_url=pdfrest_live_base_url,
33+
) as client:
34+
return client.files.create_from_paths([resource])[0]
35+
36+
37+
def test_live_add_image_to_pdf(
38+
pdfrest_api_key: str,
39+
pdfrest_live_base_url: str,
40+
uploaded_pdf_for_image_addition: PdfRestFile,
41+
uploaded_image: PdfRestFile,
42+
) -> None:
43+
with PdfRestClient(
44+
api_key=pdfrest_api_key,
45+
base_url=pdfrest_live_base_url,
46+
) as client:
47+
response = client.add_image_to_pdf(
48+
uploaded_pdf_for_image_addition,
49+
image=uploaded_image,
50+
x=25,
51+
y=50,
52+
page=1,
53+
output="live-added-image",
54+
)
55+
56+
assert response.output_files
57+
output_file = response.output_file
58+
assert output_file.type == "application/pdf"
59+
assert output_file.name.startswith("live-added-image")
60+
assert uploaded_pdf_for_image_addition.id in response.input_ids
61+
assert uploaded_image.id in response.input_ids
62+
63+
64+
@pytest.mark.asyncio
65+
async def test_live_async_add_image_to_pdf(
66+
pdfrest_api_key: str,
67+
pdfrest_live_base_url: str,
68+
uploaded_pdf_for_image_addition: PdfRestFile,
69+
uploaded_image: PdfRestFile,
70+
) -> None:
71+
async with AsyncPdfRestClient(
72+
api_key=pdfrest_api_key,
73+
base_url=pdfrest_live_base_url,
74+
) as client:
75+
response = await client.add_image_to_pdf(
76+
uploaded_pdf_for_image_addition,
77+
image=uploaded_image,
78+
x=75,
79+
y=125,
80+
page=1,
81+
)
82+
83+
assert response.output_files
84+
output_file = response.output_file
85+
assert output_file.type == "application/pdf"
86+
assert uploaded_pdf_for_image_addition.id in response.input_ids
87+
assert uploaded_image.id in response.input_ids
88+
89+
90+
def test_live_add_image_to_pdf_invalid_page(
91+
pdfrest_api_key: str,
92+
pdfrest_live_base_url: str,
93+
uploaded_pdf_for_image_addition: PdfRestFile,
94+
uploaded_image: PdfRestFile,
95+
) -> None:
96+
with (
97+
PdfRestClient(
98+
api_key=pdfrest_api_key,
99+
base_url=pdfrest_live_base_url,
100+
) as client,
101+
pytest.raises(PdfRestApiError, match=r"(?i)page"),
102+
):
103+
client.add_image_to_pdf(
104+
uploaded_pdf_for_image_addition,
105+
image=uploaded_image,
106+
x=0,
107+
y=0,
108+
page=1,
109+
extra_body={"page": 0},
110+
)

tests/resources/logo.png

68 Bytes
Loading

0 commit comments

Comments
 (0)