import { test } from 'node:test'; import assert from 'node:assert/strict'; import { chatText, mapEndLines, mapLoadedLines, matchStartLines, sayCommands } from '../src/servers/chatAnnouncements.js'; const teams = { A: 'Nordlicht', B: 'Hafenkante' }; test('Hinweise nach dem Laden: Map, Wahl, Seiten, Serienstand, Aufwärmphase', () => { const lines = mapLoadedLines({ teams, total: 3, series: { A: 1, B: 0 }, map: { number: 2, mapName: 'Inferno', pickedBy: 'B', sideChosenBy: 'A', ctTeam: 'A' }, }); assert.deepEqual(lines, [ 'Map 2 von 3: Inferno - gewählt von Hafenkante', 'Nordlicht hat die Seite gewählt: Nordlicht startet als CT, Hafenkante als T', 'Serienstand: Nordlicht 1:0 Hafenkante', 'Aufwärmphase - das Match startet, sobald der Organisator es freigibt', ]); const bo1 = mapLoadedLines({ teams, total: 1, series: { A: 0, B: 0 }, map: { number: 1, mapName: 'Nuke', pickedBy: null, sideChosenBy: 'B', ctTeam: 'B' } }); assert.equal(bo1[0], 'Map: Nuke - Entscheidungsmap'); assert.ok(!bo1.some((l) => l.startsWith('Serienstand')), 'kein Serienstand im BO1'); }); test('Hinweise bei Match-Start und Map-Ende', () => { assert.deepEqual(matchStartLines({ teams, ctTeam: 'B' }), ['Match live! Hafenkante (CT) gegen Nordlicht (T) - viel Glück, have fun']); const next = mapEndLines({ teams, total: 3, decided: null, nextMapName: 'Inferno', autoAdvanceSeconds: 30, series: { A: 1, B: 0 }, map: { number: 1, mapName: 'Mirage', winner: 'A', score: { A: 13, B: 9 } }, }); assert.deepEqual(next, [ 'Map 1 (Mirage) geht an Nordlicht mit 13:9', 'Serienstand: Nordlicht 1:0 Hafenkante', 'Nächste Map: Inferno, wird in 30 s geladen - bleibt auf dem Server', ]); const won = mapEndLines({ teams, total: 3, decided: 'B', nextMapName: null, autoAdvanceSeconds: 30, series: { A: 0, B: 2 }, map: { number: 2, mapName: 'Nuke', winner: 'B', score: { A: 5, B: 13 } }, }); assert.equal(won[1], 'Hafenkante gewinnt die Serie 2:0 - danke fürs Spielen!'); }); test('Chattexte können keine weiteren Befehle anhängen', () => { assert.equal(chatText('Team"; rcon_password x; say "'), 'Team rcon_password x say'); assert.deepEqual(sayCommands(['Hallo; quit', '', 'Stand 13:9']), ['say Hallo quit', 'say Stand 13:9']); assert.ok(chatText('x'.repeat(300)).length <= 120); });