test: add turn command state differential harness
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import {
|
||||
findTurnDifferentialWorkspaceRoot,
|
||||
runReferenceTurnCommandTrace,
|
||||
} from '../src/turn-differential/referenceSnapshot.js';
|
||||
|
||||
const configuredWorkspaceRoot = process.env.TURN_DIFFERENTIAL_WORKSPACE_ROOT;
|
||||
const workspaceRoot = configuredWorkspaceRoot ?? findTurnDifferentialWorkspaceRoot(process.cwd());
|
||||
const integration = describe.skipIf(!workspaceRoot || process.env.TURN_DIFFERENTIAL_REFERENCE !== '1');
|
||||
|
||||
integration('legacy command trace runner', () => {
|
||||
it('runs a nation declaration against a disposable cloned database', () => {
|
||||
const trace = runReferenceTurnCommandTrace(
|
||||
workspaceRoot!,
|
||||
'fixtures/turn-differential/nation-declaration.json'
|
||||
);
|
||||
|
||||
expect(trace.execution).toMatchObject({
|
||||
kind: 'nation',
|
||||
action: 'che_선전포고',
|
||||
seedDomain: 'nationCommand',
|
||||
});
|
||||
expect(trace.rng).toEqual([]);
|
||||
expect(trace.after.diplomacy).toEqual([
|
||||
expect.objectContaining({ fromNationId: 1, toNationId: 2, state: 1, term: 24 }),
|
||||
expect.objectContaining({ fromNationId: 2, toNationId: 1, state: 1, term: 24 }),
|
||||
]);
|
||||
expect(trace.after.messages).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('runs live sortie through conquest and nation collapse', () => {
|
||||
const trace = runReferenceTurnCommandTrace(
|
||||
workspaceRoot!,
|
||||
'fixtures/turn-differential/live-sortie-conquest.json'
|
||||
);
|
||||
|
||||
expect(trace.execution).toMatchObject({
|
||||
kind: 'general',
|
||||
action: 'che_출병',
|
||||
seedDomain: 'generalCommand',
|
||||
});
|
||||
expect(trace.rng).toEqual([
|
||||
{
|
||||
seq: 0,
|
||||
operation: 'nextInt',
|
||||
arguments: { maxInclusive: 0 },
|
||||
result: 0,
|
||||
},
|
||||
]);
|
||||
expect(trace.after.cities).toContainEqual(expect.objectContaining({ id: 70, nationId: 1 }));
|
||||
expect(trace.after.nations).not.toContainEqual(expect.objectContaining({ id: 2 }));
|
||||
expect(trace.after.generals).toContainEqual(expect.objectContaining({ id: 2, nationId: 0 }));
|
||||
expect(trace.after.logs.some((log) => String(log.text).includes('점령'))).toBe(true);
|
||||
expect(trace.after.logs.some((log) => String(log.text).includes('멸망'))).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user