laatste versie
This commit is contained in:
+12
-8
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* Turbo Race - headless test/simulatie
|
||||
* 1) engine-unit-test (fases, vol, host-token, botsingen, power-ups, ranking)
|
||||
* 2) integratietest: echte server + 20 websocket-clients + host die de race start
|
||||
* 2) integratietest: echte server + 19 spelers + host (toeschouwer) die de race start
|
||||
* Run: node test/simulate.js
|
||||
*/
|
||||
const assert = require('assert');
|
||||
@@ -191,16 +191,20 @@ async function integration() {
|
||||
const hostC = mkClient();
|
||||
await new Promise((res, rej) => { hostC.w.once('open', res); hostC.w.once('error', rej); });
|
||||
hostC.send({ type: 'join', name: 'Boss', color: '#ff3fa4', hostToken: ADMIN });
|
||||
await hostC.next('joined');
|
||||
test('host is de 20e speler', () => assert.strictEqual(clients.length + 1, 20));
|
||||
const hostJoined = await hostC.next('joined');
|
||||
test('host wordt toeschouwer (telt niet als speler, geen eigen auto)', () => {
|
||||
assert.strictEqual(hostJoined.host, true);
|
||||
assert.strictEqual(hostJoined.spectator, true);
|
||||
assert.strictEqual(hostJoined.id, undefined);
|
||||
});
|
||||
|
||||
const httpHealth = await new Promise((res) => {
|
||||
http.get(`http://127.0.0.1:${PORT}/healthz`, (r) => {
|
||||
let b = ''; r.on('data', (d) => b += d); r.on('end', () => res(b));
|
||||
}).on('error', () => res(''));
|
||||
});
|
||||
test('healthz rapporteert 20 spelers', () => {
|
||||
assert.ok(httpHealth.includes('"players":20'), 'healthz: ' + httpHealth);
|
||||
test('healthz rapporteert 19 spelers (host telt niet mee)', () => {
|
||||
assert.ok(httpHealth.includes('"players":19'), 'healthz: ' + httpHealth);
|
||||
});
|
||||
|
||||
// niet-host mag niet kunnen starten (inline, synchrone volgorde)
|
||||
@@ -243,10 +247,10 @@ async function integration() {
|
||||
const resultsSeen = await watchSnapshot(hostC, 'results', 26000).catch(() => null);
|
||||
test('race loopt door naar results-fase', () => assert.ok(resultsSeen, 'geen results-fase gezien'));
|
||||
if (resultsSeen) {
|
||||
test('uitslag: 20 gerangschikte spelers', () => {
|
||||
assert.strictEqual(resultsSeen.players.length, 20);
|
||||
test('uitslag: 19 gerangschikte spelers', () => {
|
||||
assert.strictEqual(resultsSeen.players.length, 19);
|
||||
const ranks = resultsSeen.players.map((p) => p.rank).sort((a, b) => a - b);
|
||||
assert.deepStrictEqual(ranks, [...Array(20).keys()].map((i) => i + 1));
|
||||
assert.deepStrictEqual(ranks, [...Array(19).keys()].map((i) => i + 1));
|
||||
});
|
||||
test('er is een duidelijke koploper/winnaar', () => {
|
||||
const first = resultsSeen.players.find((p) => p.rank === 1);
|
||||
|
||||
Reference in New Issue
Block a user