Mache Charakterentwicklungsmigration wiederholbar
All checks were successful
Deploy to production / deploy (push) Successful in 2m26s
All checks were successful
Deploy to production / deploy (push) Successful in 2m26s
This commit is contained in:
@@ -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 () => {
|
||||
|
||||
Reference in New Issue
Block a user