feat: frontend turn_html_replace SSE handler for regenerate live-swap (T86)
This commit is contained in:
@@ -85,3 +85,26 @@ def test_render_prose_mixed_full_message():
|
||||
assert '<em class="action">looks up</em>' in out
|
||||
# The apostrophe in ``she's`` is HTML-escaped to ``'``.
|
||||
assert '<span class="ooc">((she's tired))</span>' in out
|
||||
|
||||
|
||||
def test_render_turn_html_stamps_event_id_when_provided():
|
||||
"""T86 follow-up: when ``event_id`` is supplied the wrapper DIV
|
||||
carries ``id="turn-<event_id>"`` so the chat-page
|
||||
``turn_html_replace`` SSE handler can locate the prior turn DOM
|
||||
node by id and swap it in-place. Without the id the handler's
|
||||
``getElementById('turn-' + supersedes_id)`` lookup misses and
|
||||
the regenerated turn appends instead of replaces.
|
||||
"""
|
||||
out = render_turn_html("BotA", "Hello.", role="bot", event_id=42)
|
||||
assert 'id="turn-42"' in out
|
||||
# The id must sit on the wrapper DIV, not somewhere nested inside.
|
||||
assert out.startswith('<div id="turn-42" class="turn turn-bot">')
|
||||
|
||||
|
||||
def test_render_turn_html_omits_id_when_event_id_missing():
|
||||
"""Legacy callers (no ``event_id`` passed) get a clean DIV with no
|
||||
id attribute — preserves the pre-T86 fragment shape.
|
||||
"""
|
||||
out = render_turn_html("BotA", "Hello.", role="bot")
|
||||
assert "id=" not in out
|
||||
assert out.startswith('<div class="turn turn-bot">')
|
||||
|
||||
Reference in New Issue
Block a user