Slow sim to 1× on landing and resume last selected speed (ISS-057, v0.30.0)
CI / build + unit + e2e (pull_request) Successful in 8m57s
CI / build + unit + e2e (pull_request) Successful in 8m57s
This commit is contained in:
@@ -2,6 +2,8 @@ import fs from 'node:fs/promises';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
||||
import { getGameDb } from '@/lib/db/client';
|
||||
import * as schema from '@/lib/db/schema';
|
||||
import { POST } from './route';
|
||||
|
||||
let dir: string;
|
||||
@@ -84,6 +86,21 @@ describe('POST /api/sim', () => {
|
||||
await post({ timeScale: 1, paused: false }); // restore
|
||||
});
|
||||
|
||||
it('records lastSelectedTimeScale when timeScale is posted; a paused-only post leaves it untouched (ISS-057)', async () => {
|
||||
const inst = await getGameDb(); // same singleton the route's applyTimeControls writes through
|
||||
const row = async () => (await inst.db.select().from(schema.simState))[0];
|
||||
|
||||
await post({ timeScale: 250 });
|
||||
expect((await row()).lastSelectedTimeScale).toBe(250); // manual intent recorded…
|
||||
|
||||
await post({ paused: true });
|
||||
expect((await row()).paused).toBe(true);
|
||||
expect((await row()).lastSelectedTimeScale).toBe(250); // …and a {paused}-only post does not touch it
|
||||
|
||||
await post({ timeScale: 1, paused: false }); // restore
|
||||
expect((await row()).lastSelectedTimeScale).toBe(1);
|
||||
});
|
||||
|
||||
it('rejects invalid input with 400', async () => {
|
||||
for (const body of [{ timeScale: 'fast' }, { timeScale: Infinity }, { paused: 'yes' }, { bogus: 1 }]) {
|
||||
const res = await post(body);
|
||||
|
||||
Reference in New Issue
Block a user