test: project nation receive-assist state

This commit is contained in:
2026-07-26 01:44:22 +00:00
parent de29e2e157
commit e58ffab2a2
2 changed files with 33 additions and 22 deletions
+4 -1
View File
@@ -206,12 +206,15 @@ function comparisonApplyTurnFixtureSetup(mixed $setup): void
'aux' => '{}', 'aux' => '{}',
]; ];
$db->insertUpdate('nation', $data, $data); $db->insertUpdate('nation', $data, $data);
$nationStor = KVStorage::getStorage($db, $row['id'], 'nation_env');
if (($setup['isolateWorld'] ?? false) === true) {
$nationStor->deleteValue('recv_assist');
}
if (array_key_exists('turnLastByOfficerLevel', $row)) { if (array_key_exists('turnLastByOfficerLevel', $row)) {
$turnLastByOfficerLevel = $row['turnLastByOfficerLevel']; $turnLastByOfficerLevel = $row['turnLastByOfficerLevel'];
if (!is_array($turnLastByOfficerLevel)) { if (!is_array($turnLastByOfficerLevel)) {
throw new \InvalidArgumentException('setup.nations.turnLastByOfficerLevel must be an object'); throw new \InvalidArgumentException('setup.nations.turnLastByOfficerLevel must be an object');
} }
$nationStor = KVStorage::getStorage($db, $row['id'], 'nation_env');
foreach ($turnLastByOfficerLevel as $officerLevel => $lastTurn) { foreach ($turnLastByOfficerLevel as $officerLevel => $lastTurn) {
$officerLevel = filter_var($officerLevel, FILTER_VALIDATE_INT); $officerLevel = filter_var($officerLevel, FILTER_VALIDATE_INT);
if ( if (
+29 -21
View File
@@ -215,27 +215,35 @@ function comparisonTurnStateSnapshot(array $request): array
); );
$nations = array_map( $nations = array_map(
static fn(array $row): array => comparisonPickRow( static function (array $row) use ($db): array {
$row, $projected = comparisonPickRow(
[ $row,
'id' => 'nation', [
'name' => 'name', 'id' => 'nation',
'color' => 'color', 'name' => 'name',
'capitalCityId' => 'capital', 'color' => 'color',
'gold' => 'gold', 'capitalCityId' => 'capital',
'rice' => 'rice', 'gold' => 'gold',
'tech' => 'tech', 'rice' => 'rice',
'level' => 'level', 'tech' => 'tech',
'typeCode' => 'type', 'level' => 'level',
'generalCount' => 'gennum', 'typeCode' => 'type',
'power' => 'power', 'generalCount' => 'gennum',
'war' => 'war', 'power' => 'power',
'diplomacyLimit' => 'surlimit', 'war' => 'war',
'capitalRevision' => 'capset', 'diplomacyLimit' => 'surlimit',
'meta' => 'aux', 'capitalRevision' => 'capset',
], 'meta' => 'aux',
['aux'], ],
), ['aux'],
);
$nationStor = KVStorage::getStorage($db, (int)$row['nation'], 'nation_env');
$receivedAssist = $nationStor->getValue('recv_assist');
if (is_array($receivedAssist) && $receivedAssist !== []) {
$projected['meta']['recv_assist'] = $receivedAssist;
}
return $projected;
},
comparisonRowsById('nation', 'nation', $nationIds), comparisonRowsById('nation', 'nation', $nationIds),
); );