content(creation): the eleven origin fragments
race.fragment + calling.fragment compose the DM origin panel on the creation screen. Authored prose, not stubs — this is the first sentence the player reads. Parity-tested: a missing or empty fragment fails the suite.
This commit is contained in:
@@ -130,3 +130,17 @@ func test_blurb_content_carries_no_mechanics():
|
||||
"nightsight", "claws", "keen_scent"]:
|
||||
assert_false(db.races[id].has(banned),
|
||||
"%s.json leaks the mechanic '%s' — that lives in Races" % [id, banned])
|
||||
|
||||
|
||||
func test_every_race_and_calling_carries_a_fragment():
|
||||
# The DM origin panel (M4-b) composes race.fragment + calling.fragment. A
|
||||
# missing one degrades to the blurb at runtime rather than crashing — but it
|
||||
# must never SHIP missing, so the suite is where it fails.
|
||||
for id in Races.IDS:
|
||||
assert_true(db.race(id).has("fragment"), "race %s has no fragment" % id)
|
||||
assert_ne(str(db.race(id).get("fragment", "")).strip_edges(), "",
|
||||
"race %s has an empty fragment" % id)
|
||||
for id in Callings.IDS:
|
||||
assert_true(db.calling(id).has("fragment"), "calling %s has no fragment" % id)
|
||||
assert_ne(str(db.calling(id).get("fragment", "")).strip_edges(), "",
|
||||
"calling %s has an empty fragment" % id)
|
||||
|
||||
Reference in New Issue
Block a user