Skip to content

Commit d4c72c5

Browse files
tests: expand live convert_colors profile coverage and invalid override checks
Assisted-by: Codex
1 parent cdc99a9 commit d4c72c5

1 file changed

Lines changed: 112 additions & 3 deletions

File tree

tests/live/test_live_convert_colors.py

Lines changed: 112 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
from __future__ import annotations
22

3+
from typing import cast, get_args
4+
35
import pytest
46

57
from pdfrest import AsyncPdfRestClient, PdfRestApiError, PdfRestClient
68
from pdfrest.models import PdfRestFile
9+
from pdfrest.types import PdfColorProfile
710

811
from ..resources import get_test_resource_path
912

13+
ALL_COLOR_PROFILES: tuple[PdfColorProfile, ...] = cast(
14+
tuple[PdfColorProfile, ...],
15+
get_args(PdfColorProfile),
16+
)
17+
PRESET_COLOR_PROFILES: tuple[PdfColorProfile, ...] = tuple(
18+
color_profile for color_profile in ALL_COLOR_PROFILES if color_profile != "custom"
19+
)
20+
1021

1122
@pytest.fixture(scope="module")
1223
def uploaded_pdf_for_color_conversion(
@@ -21,20 +32,50 @@ def uploaded_pdf_for_color_conversion(
2132
return client.files.create_from_paths([resource])[0]
2233

2334

35+
@pytest.mark.parametrize(
36+
"color_profile",
37+
[
38+
pytest.param(color_profile, id=f"color-profile-{color_profile}")
39+
for color_profile in PRESET_COLOR_PROFILES
40+
],
41+
)
42+
def test_live_convert_colors_presets_success(
43+
pdfrest_api_key: str,
44+
pdfrest_live_base_url: str,
45+
uploaded_pdf_for_color_conversion: PdfRestFile,
46+
color_profile: PdfColorProfile,
47+
) -> None:
48+
with PdfRestClient(
49+
api_key=pdfrest_api_key,
50+
base_url=pdfrest_live_base_url,
51+
) as client:
52+
response = client.convert_colors(
53+
uploaded_pdf_for_color_conversion,
54+
color_profile=color_profile,
55+
)
56+
57+
assert response.output_files
58+
output_file = response.output_file
59+
assert output_file.type == "application/pdf"
60+
assert output_file.size > 0
61+
assert response.warning is None
62+
assert str(response.input_id) == str(uploaded_pdf_for_color_conversion.id)
63+
64+
2465
@pytest.mark.parametrize(
2566
"output_name",
2667
[
2768
pytest.param(None, id="default-output"),
2869
pytest.param("converted-colors", id="custom-output"),
2970
],
3071
)
31-
def test_live_convert_colors_success(
72+
def test_live_convert_colors_output_prefix(
3273
pdfrest_api_key: str,
3374
pdfrest_live_base_url: str,
3475
uploaded_pdf_for_color_conversion: PdfRestFile,
3576
output_name: str | None,
3677
) -> None:
37-
kwargs: dict[str, str | bool] = {"color_profile": "srgb"}
78+
kwargs: dict[str, str] = {"color_profile": "srgb"}
3879
if output_name is not None:
3980
kwargs["output"] = output_name
4081

@@ -57,7 +98,38 @@ def test_live_convert_colors_success(
5798

5899

59100
@pytest.mark.asyncio
60-
async def test_live_async_convert_colors_success(
101+
@pytest.mark.parametrize(
102+
"color_profile",
103+
[
104+
pytest.param(color_profile, id=f"color-profile-{color_profile}")
105+
for color_profile in PRESET_COLOR_PROFILES
106+
],
107+
)
108+
async def test_live_async_convert_colors_presets_success(
109+
pdfrest_api_key: str,
110+
pdfrest_live_base_url: str,
111+
uploaded_pdf_for_color_conversion: PdfRestFile,
112+
color_profile: PdfColorProfile,
113+
) -> None:
114+
async with AsyncPdfRestClient(
115+
api_key=pdfrest_api_key,
116+
base_url=pdfrest_live_base_url,
117+
) as client:
118+
response = await client.convert_colors(
119+
uploaded_pdf_for_color_conversion,
120+
color_profile=color_profile,
121+
)
122+
123+
assert response.output_files
124+
output_file = response.output_file
125+
assert output_file.type == "application/pdf"
126+
assert output_file.size > 0
127+
assert response.warning is None
128+
assert str(response.input_id) == str(uploaded_pdf_for_color_conversion.id)
129+
130+
131+
@pytest.mark.asyncio
132+
async def test_live_async_convert_colors_output_prefix(
61133
pdfrest_api_key: str,
62134
pdfrest_live_base_url: str,
63135
uploaded_pdf_for_color_conversion: PdfRestFile,
@@ -81,6 +153,43 @@ async def test_live_async_convert_colors_success(
81153
assert str(response.input_id) == str(uploaded_pdf_for_color_conversion.id)
82154

83155

156+
def test_live_convert_colors_invalid_color_profile(
157+
pdfrest_api_key: str,
158+
pdfrest_live_base_url: str,
159+
uploaded_pdf_for_color_conversion: PdfRestFile,
160+
) -> None:
161+
with (
162+
PdfRestClient(
163+
api_key=pdfrest_api_key,
164+
base_url=pdfrest_live_base_url,
165+
) as client,
166+
pytest.raises(PdfRestApiError, match=r"(?i)(color|profile)"),
167+
):
168+
client.convert_colors(
169+
uploaded_pdf_for_color_conversion,
170+
color_profile="srgb",
171+
extra_body={"color_profile": "not-a-color-profile"},
172+
)
173+
174+
175+
@pytest.mark.asyncio
176+
async def test_live_async_convert_colors_invalid_color_profile(
177+
pdfrest_api_key: str,
178+
pdfrest_live_base_url: str,
179+
uploaded_pdf_for_color_conversion: PdfRestFile,
180+
) -> None:
181+
async with AsyncPdfRestClient(
182+
api_key=pdfrest_api_key,
183+
base_url=pdfrest_live_base_url,
184+
) as client:
185+
with pytest.raises(PdfRestApiError, match=r"(?i)(color|profile)"):
186+
await client.convert_colors(
187+
uploaded_pdf_for_color_conversion,
188+
color_profile="srgb",
189+
extra_body={"color_profile": "not-a-color-profile"},
190+
)
191+
192+
84193
def test_live_convert_colors_invalid_file_id(
85194
pdfrest_api_key: str,
86195
pdfrest_live_base_url: str,

0 commit comments

Comments
 (0)