Extract server route payload handlers
This commit is contained in:
@@ -14,6 +14,7 @@ import json
|
||||
import random
|
||||
import re
|
||||
import sys
|
||||
import tempfile
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import Any, Callable
|
||||
@@ -38,9 +39,11 @@ import generation_profile_config # noqa: E402
|
||||
import krea_cast # noqa: E402
|
||||
import krea_formatter # noqa: E402
|
||||
import location_config # noqa: E402
|
||||
import loop_nodes # noqa: E402
|
||||
import prompt_builder as pb # noqa: E402
|
||||
import row_normalization # noqa: E402
|
||||
import route_metadata # noqa: E402
|
||||
import server_routes # noqa: E402
|
||||
import sdxl_formatter # noqa: E402
|
||||
import sdxl_presets # noqa: E402
|
||||
import seed_config # noqa: E402
|
||||
@@ -2643,6 +2646,74 @@ def smoke_node_utility_registration() -> None:
|
||||
_expect(krea_config.get("width") == krea_width and krea_config.get("height") == krea_height, "Krea2 config_json dimensions mismatch")
|
||||
|
||||
|
||||
def smoke_server_route_payload_policy() -> None:
|
||||
switch = loop_nodes.SxCPIndexSwitch()
|
||||
picked = switch.switch(
|
||||
2,
|
||||
"pick_input",
|
||||
"one_based",
|
||||
"fallback",
|
||||
input_1="first",
|
||||
input_2="second",
|
||||
fallback="fallback",
|
||||
)
|
||||
_expect(picked[0] == "second", "Index Switch pick_input did not select the requested input")
|
||||
_expect(picked[1] == 2, "Index Switch pick_input selected_index changed")
|
||||
_expect("selected=input_2" in picked[2], "Index Switch pick_input status lost selected input")
|
||||
|
||||
routed = switch.switch(3, "route_output", "one_based", "fallback", route_value="routed")
|
||||
_expect(routed[0] == "routed", "Index Switch route_output primary value changed")
|
||||
_expect(routed[1] == 3, "Index Switch route_output selected_index changed")
|
||||
_expect(routed[5] == "routed", "Index Switch route_output did not route value to output_3")
|
||||
|
||||
key = "smoke_route_payload"
|
||||
loop_nodes._ACCUMULATOR_STORES[key] = [
|
||||
{"id": "first", "value": "alpha", "_sxcp_preview_key": "first-key"},
|
||||
{"id": "second", "value": "beta", "_sxcp_preview_key": "second-key"},
|
||||
]
|
||||
try:
|
||||
listed = server_routes.accumulator_list_payload({"store_key": key, "preview_limit": "0"})
|
||||
_expect(listed.get("count") == 2, "Accumulator list payload lost stored entries")
|
||||
_expect(listed["entries"][0].get("value") == "alpha", "Accumulator list payload lost value summary")
|
||||
|
||||
moved = server_routes.accumulator_move_payload({"store_key": key, "entry_id": "second", "target_index": "1"})
|
||||
_expect(moved.get("moved") is True, "Accumulator move payload did not report movement")
|
||||
_expect(moved.get("from_index") == 2 and moved.get("to_index") == 1, "Accumulator move payload changed indices")
|
||||
_expect(moved["entries"][0].get("id") == "second", "Accumulator move payload did not reorder entries")
|
||||
|
||||
deleted = server_routes.accumulator_delete_payload({"store_key": key, "preview_key": "first-key"})
|
||||
_expect(deleted.get("removed") == 1, "Accumulator delete payload did not remove by preview key")
|
||||
_expect(deleted.get("count") == 1, "Accumulator delete payload count changed")
|
||||
|
||||
cleared = server_routes.accumulator_delete_payload({"store_key": key, "clear": True})
|
||||
_expect(cleared.get("removed") == 1 and cleared.get("count") == 0, "Accumulator clear payload changed")
|
||||
finally:
|
||||
loop_nodes._ACCUMULATOR_STORES.pop(key, None)
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
previous_profile_dir = character_profile.PROFILE_DIR
|
||||
character_profile.PROFILE_DIR = Path(tmpdir)
|
||||
try:
|
||||
profile = character_profile.build_character_profile_json(
|
||||
profile_name="route source",
|
||||
source="manual",
|
||||
subject_type="woman",
|
||||
age="28-year-old adult",
|
||||
body="slim",
|
||||
hair="long black hair",
|
||||
save_now=False,
|
||||
)
|
||||
saved = server_routes.profile_save_cached_payload(
|
||||
{"profile_name": "Route Save!*", "profile_json": profile["profile_json"]}
|
||||
)
|
||||
saved_path = Path(saved.get("saved_path") or "")
|
||||
_expect(saved.get("status") == "saved", "Profile save payload did not save")
|
||||
_expect(saved.get("profile_name") == "Route_Save", "Profile save payload did not sanitize requested name")
|
||||
_expect(saved_path.exists(), "Profile save payload did not write profile file")
|
||||
finally:
|
||||
character_profile.PROFILE_DIR = previous_profile_dir
|
||||
|
||||
|
||||
def smoke_seed_config_policy() -> None:
|
||||
_expect(pb.SEED_AXIS_SALTS is seed_config.SEED_AXIS_SALTS, "prompt_builder seed salts should delegate to seed_config")
|
||||
_expect(pb.seed_mode_choices() == seed_config.seed_mode_choices(), "seed mode choices drifted from seed_config")
|
||||
@@ -3326,6 +3397,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("expression_disabled", smoke_no_expression_fallback),
|
||||
("formatter_metadata_fixtures", smoke_formatter_metadata_fixtures),
|
||||
("node_utility_registration", smoke_node_utility_registration),
|
||||
("server_route_payload_policy", smoke_server_route_payload_policy),
|
||||
("seed_config_policy", smoke_seed_config_policy),
|
||||
("node_camera_registration", smoke_node_camera_registration),
|
||||
("node_route_config_registration", smoke_node_route_config_registration),
|
||||
|
||||
Reference in New Issue
Block a user