test: 실제 transport 권한과 커맨드 내구 행렬을 검증한다
실제 Fastify HTTP, PostgreSQL과 Redis에서 예약 mutation의 인증·sanction·소유권·수뇌 경계, 감사 원장과 무부작용을 검증한다. 장수 55개와 수뇌 35개를 R1/R2/R3으로 전수 분류하고 대표 9개를 Ref/Core 의미 비교부터 lease, 단일 flush와 fresh reload까지 실행한다. 비행위자 revision/lease와 관직 5 수뇌 partition도 exact 보존한다.
This commit is contained in:
+52
-7
@@ -485,11 +485,33 @@ databaseIntegration('Core PostgreSQL full reserved-turn lifecycle persistence',
|
||||
}
|
||||
world.executeGeneralTurn(executableActor);
|
||||
|
||||
const createdIds = world
|
||||
.peekDirtyState()
|
||||
.createdGenerals.map((general) => general.id)
|
||||
.sort((left, right) => left - right);
|
||||
const createdGenerals = world.peekDirtyState().createdGenerals;
|
||||
const createdIds = createdGenerals.map((general) => general.id).sort((left, right) => left - right);
|
||||
expect(createdIds).toEqual([102, 103, 104]);
|
||||
const createdVolunteerIdentity = createdGenerals
|
||||
.map((general) => ({
|
||||
id: general.id,
|
||||
affinity: general.affinity,
|
||||
npcState: general.npcState,
|
||||
npcOrg: asRecord(general.meta).npc_org,
|
||||
expLevel: asRecord(general.meta).explevel,
|
||||
dedLevel: asRecord(general.meta).dedlevel,
|
||||
}))
|
||||
.sort((left, right) => left.id - right.id);
|
||||
expect(createdVolunteerIdentity).toEqual(
|
||||
createdIds.map((id) => ({
|
||||
id,
|
||||
affinity: expect.any(Number),
|
||||
npcState: 4,
|
||||
npcOrg: 4,
|
||||
expLevel: 0,
|
||||
dedLevel: 1,
|
||||
}))
|
||||
);
|
||||
for (const volunteer of createdVolunteerIdentity) {
|
||||
expect(volunteer.affinity).toBeGreaterThanOrEqual(1);
|
||||
expect(volunteer.affinity).toBeLessThanOrEqual(150);
|
||||
}
|
||||
expect(reservedTurns.peekDirtyState().generalInitializationIds.sort((left, right) => left - right)).toEqual(
|
||||
createdIds
|
||||
);
|
||||
@@ -527,6 +549,22 @@ databaseIntegration('Core PostgreSQL full reserved-turn lifecycle persistence',
|
||||
).toEqual(Array.from({ length: 30 }, (_, turnIdx) => ({ turnIdx, action: '휴식', args: {} })));
|
||||
}
|
||||
|
||||
const persistedVolunteerIdentity = (
|
||||
await db.general.findMany({
|
||||
where: { id: { in: createdIds } },
|
||||
select: { id: true, affinity: true, npcState: true, meta: true },
|
||||
orderBy: { id: 'asc' },
|
||||
})
|
||||
).map((general) => ({
|
||||
id: general.id,
|
||||
affinity: general.affinity,
|
||||
npcState: general.npcState,
|
||||
npcOrg: asRecord(general.meta).npc_org,
|
||||
expLevel: asRecord(general.meta).explevel,
|
||||
dedLevel: asRecord(general.meta).dedlevel,
|
||||
}));
|
||||
expect(persistedVolunteerIdentity).toEqual(createdVolunteerIdentity);
|
||||
|
||||
const persistedNation = await db.nation.findUnique({ where: { id: nationId }, select: { meta: true } });
|
||||
expect(persistedNation?.meta).toMatchObject({ gennum: 4 });
|
||||
|
||||
@@ -534,9 +572,16 @@ databaseIntegration('Core PostgreSQL full reserved-turn lifecycle persistence',
|
||||
expect(
|
||||
reloaded.snapshot.generals
|
||||
.filter((general) => createdIds.includes(general.id))
|
||||
.map((general) => general.id)
|
||||
.sort((left, right) => left - right)
|
||||
).toEqual(createdIds);
|
||||
.map((general) => ({
|
||||
id: general.id,
|
||||
affinity: general.affinity,
|
||||
npcState: general.npcState,
|
||||
npcOrg: asRecord(general.meta).npc_org,
|
||||
expLevel: asRecord(general.meta).explevel,
|
||||
dedLevel: asRecord(general.meta).dedlevel,
|
||||
}))
|
||||
.sort((left, right) => left.id - right.id)
|
||||
).toEqual(createdVolunteerIdentity);
|
||||
expect(reloaded.snapshot.nations.find((nation) => nation.id === nationId)?.meta).toMatchObject({ gennum: 4 });
|
||||
const reloadedReservedTurns = new InMemoryReservedTurnStore(db, {
|
||||
maxGeneralTurns: 30,
|
||||
|
||||
Reference in New Issue
Block a user