Files
ComfyUI/tests-unit/comfy_api_test/resolution_preview_serialization_test.py

62 lines
2.0 KiB
Python

from comfy_api.latest._io import ResolutionPreview
from comfy_extras.nodes_resolution import ResolutionSelector
def test_resolution_preview_defaults_optional_and_socketless():
preview = ResolutionPreview.Input("preview")
assert preview.optional is True
assert preview.socketless is True
def test_resolution_preview_serializes_default_widget_names():
serialized = ResolutionPreview.Input("preview").as_dict()
assert serialized["socketless"] is True
assert serialized["ratio_widget"] == "aspect_ratio"
assert serialized["megapixels_widget"] == "megapixels"
assert serialized["multiple_widget"] == "multiple"
def test_resolution_preview_serializes_custom_widget_names():
serialized = ResolutionPreview.Input(
"preview",
ratio_widget="ratio",
megapixels_widget="mp",
multiple_widget="resolution_steps",
).as_dict()
assert serialized["ratio_widget"] == "ratio"
assert serialized["megapixels_widget"] == "mp"
assert serialized["multiple_widget"] == "resolution_steps"
def test_resolution_preview_carries_no_default_value():
serialized = ResolutionPreview.Input("preview").as_dict()
assert "default" not in serialized
def test_resolution_selector_schema_exposes_optional_preview():
schema = ResolutionSelector.define_schema()
preview = next(i for i in schema.inputs if i.id == "preview")
assert preview.optional is True
assert str(preview.get_io_type()) == "RESOLUTION_PREVIEW"
def test_resolution_selector_executes_without_preview():
"""The frontend never sends the preview value in the API prompt."""
output = ResolutionSelector.execute("16:9 (Widescreen)", 1.0, 8)
assert output.result == (1368, 768)
def test_resolution_selector_ignores_preview_value():
baseline = ResolutionSelector.execute("3:4 (Portrait Standard)", 2.0, 32)
with_preview = ResolutionSelector.execute(
"3:4 (Portrait Standard)", 2.0, 32, preview={"stale": True}
)
assert baseline.result == with_preview.result == (1248, 1664)