Correct expansion preview guidance

This commit is contained in:
Quintine committed 2026-10-27 20:48:50 +11:00
1 parent fbdf11c789
commit 813a2bacbe
6 files changed
+57 -11

No files matched your search

+17
View File
@@ -15,3 +15,20 @@ void test('every phase and base faction has a discoverable rule topic with valid
assert.ok(ids.has('ai-players'));
});
void test('setup and expansion guides describe available starts as unfinished previews', () => {
for (const id of [
'setup',
'card-amal',
'moritani-enemy',
'moritani-ally-retention',
'choam-gamont',
'choam-jubba',
'ecaz-modules',
]) {
const topic = RULE_TOPICS.find((item) => item.id === id);
assert.ok(topic, `missing ${id}`);
const guidance = topic.steps.join(' ');
assert.match(guidance, /preview/i, id);
assert.doesNotMatch(guidance, /(?:expansion|CHOAM|Moritani) (?:faction )?(?:starts|games) remain (?:unavailable|disabled|gated)/i, id);
}
});
+15
View File
@@ -28,6 +28,21 @@ void test('presentation does not export source-verification metadata or unverifi
}
});
void test('canonical Richese inspectors describe available previews and retain card-specific limits', () => {
const sapho = RICHESE_CARD_DEFINITIONS.find(row => row.card.effect === 'juiceOfSapho');
const karama = RICHESE_CARD_DEFINITIONS.find(row => row.card.effect === 'karama');
assert.ok(sapho && karama);
const saphoAvailability = cardPresentation(sapho.card).availability;
const karamaAvailability = cardPresentation(karama.card).availability;
assert.match(saphoAvailability ?? '', /supported Richese and expansion starts are available as unfinished previews/i);
assert.match(saphoAvailability ?? '', /Once Around first or last/);
assert.match(saphoAvailability ?? '', /other phase or auction modes remain unfinished/);
assert.match(karamaAvailability ?? '', /supported Richese and expansion starts are available as unfinished previews/i);
assert.match(karamaAvailability ?? '', /bounded card handlers/);
for (const definition of RICHESE_CARD_DEFINITIONS)
assert.doesNotMatch(cardPresentation(definition.card).availability ?? '', /expansion starts remain disabled/i);
});
void test('missing, altered and merely similar Richese identities receive no canonical full guide', () => {
for (const card of richeseCards()) {
const impostors: Card[] = [