my-scrolls / my-games applet rows: prepend actor display_name to the body cell — the latest event's to_prose returns the action alone ("deposits a Carte Blanche…") because scroll.html splits the row across <strong>{{ event.actor|display_name }}</strong> + adjacent {{ to_prose|safe }}; the applet rows have a single middle column (<title> | <body> | <ts>) so they need both halves concatenated into .row-body; ROOM_CREATED welcome events (actor=None) keep rendering prose alone since to_prose already reads "Welcome to <name>!" — the {% if item.latest_event.actor %} guard skips the prefix, mirroring the same actor-guarded <strong> we added to _partials/_scroll.html + _applet-most-recent-scroll.html on c03fb2b so welcome lines don't carry a bogus empty actor; 2 ITs added — BillboardViewTest.test_my_scrolls_applet_row_body_includes_actor_display_name + GameboardViewTest.test_my_games_row_body_includes_actor_display_name — scoped to <span class="row-body">...stuart...deposits...</span> (regex match on the .row-body cell content) so the assertion can't pass on actor renders outside the row (the Most Recent Scroll applet on /billboard/ renders the same actor too, separately — initial pass missed this and assertIn("acto", body) matched there instead, hiding the bug); BillboardViewTest also gains test_my_scrolls_applet_row_body_no_actor_prefix_for_welcome to lock in the no-empty-prefix contract for ROOM_CREATED welcome events; 931 ITs green; settings.local.json fix-up — Bash(git add *) (literal * would only match the exact string "git add *", not git add -u) → Bash(git add:*) + companion read-only git patterns (status / diff / log / show) so the in-session commit flow stops prompting — TDD
Code architected by Disco DeDisco <discodedisco@outlook.com> Git commit message Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -64,6 +64,28 @@ class GameboardViewTest(TestCase):
|
||||
# A .row-body cell carries some event prose
|
||||
self.assertRegex(body, r'<time[^>]+class="[^"]*row-ts')
|
||||
|
||||
def test_my_games_row_body_includes_actor_display_name(self):
|
||||
"""Mirror of My Scrolls — the My Games row body must include the
|
||||
event actor's display_name so `<actor> deposits a Coin-on-a-String`
|
||||
reads as a complete sentence. Scoped to the `.row-body` span (vs.
|
||||
a loose substring) so the assertion can't pass on actor renders
|
||||
outside the row (no Most Recent Scroll on gameboard, but the
|
||||
navbar etc. could shadow a substring match)."""
|
||||
from apps.drama.models import GameEvent, record
|
||||
actor = User.objects.create(email="stuart@test.io", username="stuart")
|
||||
room = Room.objects.create(name="GameRoom", owner=self.user)
|
||||
record(
|
||||
room, GameEvent.SLOT_FILLED, actor=actor,
|
||||
slot_number=2, token_type="coin",
|
||||
token_display="Coin-on-a-String", renewal_days=7,
|
||||
)
|
||||
response = self.client.get("/gameboard/")
|
||||
body = response.content.decode()
|
||||
self.assertRegex(
|
||||
body,
|
||||
r'<span class="row-body">[^<]*stuart[^<]*deposits a Coin-on-a-String',
|
||||
)
|
||||
|
||||
def test_game_kit_has_coin_on_a_string(self):
|
||||
[_] = self.parsed.cssselect("#id_game_kit #id_kit_coin_on_a_string")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user