Files
odysseus/tests/test_editor_quick_edit_layer_blend.py
T
pewdiepie-archdaemonandClaude Opus 5.5 5fac693c1c feat(photo-editor): Ajax Image Editor client (Photoshop-parity tools)
Photoshop-parity editor client: layers, selection/masking, brushes,
smart filters, LUT import, Quick Edit, mobile gestures, workspaces,
batch operations, and the service-worker versioning (v978->v1006).

Source: vendor/photocraft (ad1cff44) photo-editor client files, merged
onto upstream/dev (a8c147b2). Conflict resolution documented in
pr_work/A_conflicts.md; editor files taken from vendor/photocraft
(upstream's editor is an earlier snapshot of the same feature).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:57:35 +00:00

35 lines
1.4 KiB
Python

"""Quick Edit sets a layer's blend mode (Photoshop Layers-panel blend dropdown).
"Set the blend mode to multiply" previously fell through the command box to the
keyword planner, which had no intent for it, so nothing happened. It now routes
deterministically to the `layers.setBlend` op.
"""
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
EDITOR = (ROOT / "static" / "js" / "galleryEditor.js").read_text(encoding="utf-8")
SERVER = (ROOT / "routes" / "editor_agent_routes.py").read_text(encoding="utf-8")
COVERAGE = (ROOT / "docs" / "QUICKEDIT_COVERAGE.md").read_text(encoding="utf-8")
def test_blend_routing_present():
assert "// --- Layer ▸ Blend Mode (Photoshop Layers-panel blend dropdown, deterministic) ---" in EDITOR
assert "await _runQuickControlOp('layers.setBlend', { blendMode: _hit[1] });" in EDITOR
assert "if (/\\bblend(?:ing)?\\b/.test(p) && !_looksGenerative(p)) {" in EDITOR
def test_blend_routing_precedes_layer_management():
routing = EDITOR.index("await _runQuickControlOp('layers.setBlend', { blendMode: _hit[1] });")
assert routing < EDITOR.index("// --- Layer management commands ---")
def test_setblend_op_in_both_catalogs():
assert "'layers.setBlend':" in EDITOR
assert '"layers.setBlend"' in SERVER
def test_coverage_doc_marks_layer_blend_ok():
row = next(line for line in COVERAGE.splitlines() if "Layer → Blend Mode" in line)
assert "OK" in row
assert "fast path" in row