Mache Charakterentwicklungsmigration wiederholbar
All checks were successful
Deploy to production / deploy (push) Successful in 2m26s

This commit is contained in:
Torsten Schulz (local)
2026-11-04 14:37:11 +01:00
parent 343bf64115
commit 8e8e92aa62
3 changed files with 51 additions and 10 deletions

View File

@@ -71,6 +71,31 @@ test('database migration, persistence and daemon conception paths', {
await assert.rejects(db.query(`INSERT INTO falukant_data.character
(puberty_start_age, fertile_from_age) VALUES (12, 11)`));
await t.test('repeating the migration preserves all existing character data', async () => {
const [saved] = await db.query('SELECT * FROM falukant_data.character ORDER BY id');
await migration.up(qi);
const [repeated] = await db.query('SELECT * FROM falukant_data.character ORDER BY id');
assert.deepEqual(repeated, saved);
});
for (const bothColumns of [true, false]) {
await t.test(`manually prepared schema with ${bothColumns ? 'both columns' : 'one column'}`, async () => {
await migration.down(qi);
await db.query(`ALTER TABLE falukant_data.character ADD COLUMN puberty_start_age SMALLINT`);
if (bothColumns) {
await db.query(`ALTER TABLE falukant_data.character ADD COLUMN fertile_from_age SMALLINT;
UPDATE falukant_data.character SET fertile_from_age = 13 WHERE id = 1`);
}
await db.query(`UPDATE falukant_data.character SET puberty_start_age = 10 WHERE id = 1`);
await migration.up(qi);
const [characters] = await db.query('SELECT * FROM falukant_data.character ORDER BY id');
assert.equal(characters[0].puberty_start_age, 10);
if (bothColumns) assert.equal(characters[0].fertile_from_age, 13);
assert.deepEqual(characters[0].pregnancy_due_at, before[0].pregnancy_due_at);
assert.ok(characters.every(c => c.fertile_from_age > c.puberty_start_age));
});
}
await t.test('daemon checks both parents and preserves already scheduled births', {
skip: !process.env.DAEMON_SQL_PATH,
}, async () => {