import { Faction } from '@staratlas/dev-profile-faction'; import { describe, expect, it } from 'vitest'; import { resolveEffectiveRiskZone } from '../src/effectiveRisk'; import { SafetyStatus, type RiskZone } from '../src/generated'; describe('effective region risk', () => { it('preserves immutable authored Low Risk home territory', () => { const riskZone: RiskZone = { __kind: 'LowRiskZone', fields: [Faction.Mud], }; expect( resolveEffectiveRiskZone({ owner: Faction.Oni, riskZone, safetyStatus: SafetyStatus.Border, }), ).toBe(riskZone); }); it('promotes a captured secured region to effective Low Risk', () => { expect( resolveEffectiveRiskZone({ owner: Faction.Oni, riskZone: { __kind: 'HighRiskZone' }, safetyStatus: SafetyStatus.Safe, }), ).toEqual({ __kind: 'LowRiskZone', fields: [Faction.Oni] }); }); it('falls back to the authored tier when the border is not secured', () => { expect( resolveEffectiveRiskZone({ owner: Faction.Oni, riskZone: { __kind: 'MediumRiskZone' }, safetyStatus: SafetyStatus.Border, }), ).toEqual({ __kind: 'MediumRiskZone' }); }); it('never promotes an unaligned region', () => { expect( resolveEffectiveRiskZone({ owner: Faction.Unaligned, riskZone: { __kind: 'MediumRiskZone' }, safetyStatus: SafetyStatus.Safe, }), ).toEqual({ __kind: 'MediumRiskZone' }); }); });