test: compare general rank data state
This commit is contained in:
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace sammo;
|
||||
|
||||
use sammo\Enums\RankColumn;
|
||||
|
||||
if (PHP_SAPI !== 'cli') {
|
||||
http_response_code(404);
|
||||
exit;
|
||||
@@ -358,6 +360,30 @@ function comparisonApplyTurnFixtureSetup(mixed $setup): void
|
||||
$db->update('general', $patch, 'no = %i', $row['id']);
|
||||
}
|
||||
}
|
||||
foreach ($setup['rankData'] ?? [] as $row) {
|
||||
if (
|
||||
!is_array($row)
|
||||
|| !is_int($row['generalId'] ?? null)
|
||||
|| !is_string($row['type'] ?? null)
|
||||
|| RankColumn::tryFrom($row['type']) === null
|
||||
|| !is_int($row['value'] ?? null)
|
||||
) {
|
||||
throw new \InvalidArgumentException('invalid setup.rankData row');
|
||||
}
|
||||
$nationId = (int)($db->queryFirstField(
|
||||
'SELECT nation FROM general WHERE no = %i',
|
||||
$row['generalId'],
|
||||
) ?? 0);
|
||||
$db->insertUpdate('rank_data', [
|
||||
'general_id' => $row['generalId'],
|
||||
'nation_id' => $nationId,
|
||||
'type' => $row['type'],
|
||||
'value' => $row['value'],
|
||||
], [
|
||||
'nation_id' => $nationId,
|
||||
'value' => $row['value'],
|
||||
]);
|
||||
}
|
||||
if (($setup['isolateWorld'] ?? false) === true && ($setup['generals'] ?? []) !== []) {
|
||||
$maxGeneralId = max(array_map(
|
||||
static fn(array $row): int => (int)$row['id'],
|
||||
|
||||
Reference in New Issue
Block a user