Admin: Suche, Filter und Archiv in der Matchliste, Fehler direkt in der Karte
This commit is contained in:
1 parent
c50741e49c
commit
7ae3efef60
9 files changed
+206
-12
No files matched your search
@@ -508,3 +508,40 @@ test('Neustart im laufenden Match: Map wird wieder geladen, Server läuft die vo
|
||||
await close();
|
||||
}
|
||||
});
|
||||
test('Archiv: nur abgeschlossene Matches, eigene Liste, automatisch nach Frist', async () => {
|
||||
const { app, call, close } = await setup({ adminPassword: 'admin-geheim', archiveAfterDays: 3 });
|
||||
try {
|
||||
const token = (await call('POST', '/admin/login', { body: { password: 'admin-geheim' } })).body.token;
|
||||
const mk = async (a, b) => (await call('POST', '/matches', { body: { teamA: a, teamB: b, mode: 'wingman', format: 'bo1' } })).body;
|
||||
const open = await mk('Offen A', 'Offen B');
|
||||
const done = await mk('Fertig A', 'Fertig B');
|
||||
const old = await mk('Alt A', 'Alt B');
|
||||
|
||||
// Laufende Matches lassen sich nicht archivieren
|
||||
assert.equal((await call('POST', `/admin/matches/${open.id}/archive`, { token })).status, 409);
|
||||
|
||||
await call('POST', `/admin/matches/${done.id}/finish`, { token });
|
||||
assert.equal((await call('POST', `/admin/matches/${done.id}/archive`, { token })).status, 200);
|
||||
let list = (await call('GET', '/admin/matches', { token })).body;
|
||||
assert.ok(!list.matches.some((m) => m.id === done.id), 'archiviertes Match fehlt in der normalen Liste');
|
||||
assert.equal(list.archivedCount, 1);
|
||||
const archive = (await call('GET', '/admin/matches?archived=1', { token })).body;
|
||||
assert.deepEqual(archive.matches.map((m) => m.id), [done.id]);
|
||||
assert.ok(archive.matches[0].archivedAt > 0);
|
||||
|
||||
// Zurückholen
|
||||
await call('POST', `/admin/matches/${done.id}/unarchive`, { token });
|
||||
list = (await call('GET', '/admin/matches', { token })).body;
|
||||
assert.ok(list.matches.some((m) => m.id === done.id));
|
||||
|
||||
// Automatisch: abgebrochenes Match, älter als 3 Tage
|
||||
await call('POST', `/admin/matches/${old.id}/cancel`, { token });
|
||||
assert.equal(app.service.archiveClosed(Date.now() + 2 * 86_400_000), 0, 'nach 2 Tagen noch nicht');
|
||||
await app.manager.reap(Date.now() + 4 * 86_400_000);
|
||||
assert.ok(app.service.getMatch(old.id).archived_at > 0, 'nach 4 Tagen archiviert');
|
||||
assert.ok(app.service.getMatch(done.id).archived_at > 0, 'zurückgeholtes Match wird nach Ablauf der Frist wieder archiviert');
|
||||
assert.equal(app.service.getMatch(open.id).archived_at, null, 'offene Matches bleiben');
|
||||
} finally {
|
||||
await close();
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user