merge: 최신 main을 메인 도시 정보 호환에 통합

This commit is contained in:
2026-08-20 16:43:59 +00:00
32 changed files with 1417 additions and 792 deletions
+26
View File
@@ -218,6 +218,32 @@ describe('inherit router actor and permission boundaries', () => {
}
);
it('orders unique auction candidates by Ref slot order and preserves order within each slot', async () => {
const fixture = buildContext({
configConst: {
allItems: {
item: { che_보물_도기: 1 },
book: { che_서적_07_논어: 1 },
weapon: { che_무기_12_칠성검: 1 },
horse: {
che_명마_07_백마: 1,
che_명마_07_기주마: 1,
},
},
},
});
const status = await appRouter.createCaller(fixture.context).inherit.getStatus();
expect(status.availableUnique.map(({ key, slot }) => ({ key, slot }))).toEqual([
{ key: 'che_명마_07_백마', slot: 'horse' },
{ key: 'che_명마_07_기주마', slot: 'horse' },
{ key: 'che_무기_12_칠성검', slot: 'weapon' },
{ key: 'che_서적_07_논어', slot: 'book' },
{ key: 'che_보물_도기', slot: 'item' },
]);
});
it('loads the first inheritance-log page without an out-of-range integer cursor', async () => {
const createdAt = new Date('2026-07-26T00:00:00Z');
const fixture = buildContext({
+4
View File
@@ -15,6 +15,7 @@ const buildContext = (
): GameApiContext =>
({
auth: null,
profile: { id: 'che', scenario: 'default', name: 'che:default' },
db: {
worldState: {
findFirst: vi.fn(async () => ({
@@ -75,6 +76,7 @@ describe('lobby season state', () => {
buildContext(
{
serverId: 'che_260819_season',
gameIdx: 101,
preopenAt: '2026-08-19 22:00:00',
opentime: '2026-08-19 23:00:00',
scenarioMeta: { title: '【가상모드27-b】 아시아 명장전(비급)' },
@@ -103,6 +105,8 @@ describe('lobby season state', () => {
expect(result).toMatchObject({
serverId: 'che_260819_season',
profile: 'che',
gameIdx: 101,
preopenAt: '2026-08-19 22:00:00',
opentime: '2026-08-19 23:00:00',
scenarioTitle: '【가상모드27-b】 아시아 명장전(비급)',