import html as _html_mod
from render import render_entity, render_treasure, render_recovered
def test_entity_renders_silhouette_scene():
from render import render_entity
html = render_entity(20)
assert 'entity-silhouette' in html # the new free-standing figure class
assert 'entity-portal' not in html # the gothic arch is gone
def test_entity_cue_marker():
from render import render_entity
assert 'data-cue="recall"' in render_entity(60, cue="recall", seq=3)
assert 'data-seq="3"' in render_entity(60, cue="recall", seq=3)
# no cue → no marker
assert 'cue-now' not in render_entity(20)
class TestRenderRecovered:
def test_empty_shows_nothing(self):
out = render_recovered(0)
assert "remembers nothing of itself" in out.lower()
assert "drawer-head" in out
def test_reveals_fragments_in_order(self):
import html as _html
from character import OWN_FRAGMENTS
out = render_recovered(2)
assert _html.escape(OWN_FRAGMENTS[0], quote=True) in out
assert _html.escape(OWN_FRAGMENTS[1], quote=True) in out
assert _html.escape(OWN_FRAGMENTS[2], quote=True) not in out
def test_capped_at_total_fragments(self):
from character import OWN_FRAGMENTS
out = render_recovered(99)
assert out.count('class="recovered-item') == len(OWN_FRAGMENTS)
def test_recovered_weaves_stolen(self):
from character import OWN_FRAGMENTS
html = render_recovered(1, claimed=["a red bicycle, the summer i turned seven"])
assert _html_mod.escape(OWN_FRAGMENTS[0], quote=True) in html # its real past
assert "a red bicycle" in html # the stolen memory
assert "stolen" in html # marked
# back-compat: no claimed arg still works
assert "remembers nothing of itself" in render_recovered(0).lower()
class TestRenderTreasure:
def test_empty_shows_placeholder(self):
out = render_treasure([])
assert "nothing yet. tell me something true." in out
def test_empty_has_no_memory_item(self):
# The memory-item style marker must not appear when there are no memories
out = render_treasure([])
assert "border-left:2px solid #5a3a7a" not in out
def test_single_memory_appears(self):
out = render_treasure(["has a dog named Nala"])
assert "has a dog named Nala" in out
def test_multiple_memories_all_appear(self):
out = render_treasure(["has a dog named Nala", "grew up near the sea"])
assert "has a dog named Nala" in out
assert "grew up near the sea" in out
def test_html_tags_are_escaped(self):
out = render_treasure([""])
assert "