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 "