feat(game-ui): 사령턴 대상 지도를 인자 계약에 연결
도시·국가 선택 필드에서 지도 대상을 자동 판별하고 발령을 제외한 공개 사령턴 13종의 지도 선택과 보조 정보를 Chromium 회귀로 고정한다.
This commit is contained in:
@@ -6,10 +6,7 @@ import {
|
||||
} from '@sammo-ts/logic';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import {
|
||||
buildTurnCommandInputFields,
|
||||
parseReservedTurnArgs,
|
||||
} from '../src/turns/commandInput.js';
|
||||
import { buildTurnCommandInputFields, parseReservedTurnArgs } from '../src/turns/commandInput.js';
|
||||
|
||||
describe('turn command argument input', () => {
|
||||
it('builds supported fields for every argument-bearing command module', async () => {
|
||||
@@ -22,6 +19,9 @@ describe('turn command argument input', () => {
|
||||
key: spec.key,
|
||||
fields: buildTurnCommandInputFields(spec),
|
||||
}));
|
||||
const nationFields = nation
|
||||
.filter((spec) => spec.reqArg)
|
||||
.map((spec) => ({ key: spec.key, fields: buildTurnCommandInputFields(spec) }));
|
||||
|
||||
expect(argumentSpecs).toHaveLength(44);
|
||||
expect(fields.every((entry) => entry.fields.length > 0)).toBe(true);
|
||||
@@ -32,6 +32,34 @@ describe('turn command argument input', () => {
|
||||
{ key: 'destNationId', kind: 'select', optionSource: 'nations' },
|
||||
{ key: 'amountList', kind: 'numberTuple' },
|
||||
]);
|
||||
|
||||
expect(
|
||||
nationFields
|
||||
.filter((entry) => entry.key !== 'che_발령')
|
||||
.flatMap((entry) =>
|
||||
entry.fields
|
||||
.filter((field) => field.optionSource === 'cities' || field.optionSource === 'nations')
|
||||
.map((field) => `${entry.key}:${field.optionSource}`)
|
||||
)
|
||||
.sort()
|
||||
).toEqual(
|
||||
[
|
||||
'che_급습:nations',
|
||||
'che_물자원조:nations',
|
||||
'che_백성동원:cities',
|
||||
'che_불가침제의:nations',
|
||||
'che_불가침파기제의:nations',
|
||||
'che_선전포고:nations',
|
||||
'che_수몰:cities',
|
||||
'che_이호경식:nations',
|
||||
'che_종전제의:nations',
|
||||
'che_천도:cities',
|
||||
'che_초토화:cities',
|
||||
'che_피장파장:nations',
|
||||
'che_허보:cities',
|
||||
'cr_인구이동:cities',
|
||||
].sort()
|
||||
);
|
||||
});
|
||||
|
||||
it('normalizes valid arguments and rejects malformed or wrong-scope commands', async () => {
|
||||
@@ -50,8 +78,6 @@ describe('turn command argument input', () => {
|
||||
amount: 200,
|
||||
destGeneralId: 7,
|
||||
});
|
||||
await expect(parseReservedTurnArgs('general', 'che_포상', {})).rejects.toThrow(
|
||||
'Unknown general turn command'
|
||||
);
|
||||
await expect(parseReservedTurnArgs('general', 'che_포상', {})).rejects.toThrow('Unknown general turn command');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user