This commit is contained in:
@@ -167,3 +167,41 @@ it('adds policy report invalidation when upgrading a database at version 12', as
|
||||
upgraded.prepare("DELETE FROM settings WHERE key='autoscaling_paused'").run();
|
||||
expect(revision()).toBeGreaterThan(paused);
|
||||
});
|
||||
|
||||
it('adds match report invalidation on upgrade without invalidating for score heartbeats', async () => {
|
||||
const { db, closeDb } = await import('../../src/lib/server/db/index.js');
|
||||
const handle = db();
|
||||
for (const table of ['leaderboard_matches', 'leaderboard_match_players'])
|
||||
for (const action of ['INSERT', 'UPDATE', 'DELETE'])
|
||||
handle.exec(`DROP TRIGGER report_metrics_${table}_${action}`);
|
||||
handle.pragma('user_version = 13');
|
||||
closeDb();
|
||||
const upgraded = db();
|
||||
const revision = () =>
|
||||
(
|
||||
upgraded
|
||||
.prepare("SELECT revision FROM report_revisions WHERE topic='metrics'")
|
||||
.get() as { revision: number }
|
||||
).revision;
|
||||
const before = revision();
|
||||
upgraded.exec(`INSERT INTO leaderboard_matches
|
||||
(id,server,game,map,map_key,map_name,started_at,last_received_at,last_event,last_fingerprint)
|
||||
VALUES(1,'removed','t5','zombie_moon','t5:zombie_moon','Moon',
|
||||
'2026-10-10T12:00:00.000Z','2026-10-10T12:00:00.000Z','game_start','start');`);
|
||||
expect(revision()).toBeGreaterThan(before);
|
||||
const started = revision();
|
||||
upgraded.exec(`INSERT INTO leaderboard_match_players (match_id,guid,first_seen_at,last_seen_at)
|
||||
VALUES(1,'player','2026-10-10T12:00:00.000Z','2026-10-10T12:00:00.000Z');`);
|
||||
expect(revision()).toBeGreaterThan(started);
|
||||
const joined = revision();
|
||||
upgraded.exec(`UPDATE leaderboard_matches SET highest_round=2,last_event='heartbeat',
|
||||
last_received_at='2026-10-10T12:00:30.000Z' WHERE id=1;
|
||||
UPDATE leaderboard_match_players SET kills=10,present=0 WHERE match_id=1;`);
|
||||
expect(revision()).toBe(joined);
|
||||
upgraded.exec("UPDATE leaderboard_matches SET map_name='Custom Moon' WHERE id=1");
|
||||
expect(revision()).toBeGreaterThan(joined);
|
||||
const renamed = revision();
|
||||
upgraded.exec('DELETE FROM leaderboard_matches WHERE id=1');
|
||||
expect(revision()).toBeGreaterThan(renamed);
|
||||
expect(upgraded.prepare('SELECT * FROM leaderboard_match_players').all()).toEqual([]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user