fix(system): preserve MQTT interval draft editing
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import { test } from "node:test";
|
||||
import ts from "typescript";
|
||||
|
||||
const sourceRoot = new URL("../src/", import.meta.url);
|
||||
|
||||
@@ -19,6 +20,7 @@ test("Worker 006 telemetry remains a bounded system feature slice", async () =>
|
||||
telemetryPolling,
|
||||
contourSettings,
|
||||
contourContract,
|
||||
pollIntervalContract,
|
||||
telemetryStyles,
|
||||
styles,
|
||||
] = await Promise.all([
|
||||
@@ -31,6 +33,7 @@ test("Worker 006 telemetry remains a bounded system feature slice", async () =>
|
||||
read("core/system/useWorkerTelemetry.ts"),
|
||||
read("components/system/ComputeContourSettingsWindow.tsx"),
|
||||
read("core/system/computeContours.ts"),
|
||||
read("core/system/telemetryPollInterval.ts"),
|
||||
read("styles/system-telemetry.css"),
|
||||
read("styles.css"),
|
||||
]);
|
||||
@@ -71,6 +74,49 @@ test("Worker 006 telemetry remains a bounded system feature slice", async () =>
|
||||
assert.doesNotMatch(networkWorkspace, /8765/);
|
||||
assert.match(contourSettings, /FieldFrame label="Операционная система"/);
|
||||
assert.match(contourSettings, /label="Интервал MQTT"/);
|
||||
assert.match(contourSettings, /value=\{telemetryPollIntervalDraft\}/);
|
||||
assert.match(contourSettings, /onBlur=\{commitTelemetryPollInterval\}/);
|
||||
assert.match(contourSettings, /event\.key === "Escape"/);
|
||||
assert.doesNotMatch(
|
||||
contourSettings,
|
||||
/telemetry_poll_interval_seconds:\s*Number\(event\.currentTarget\.value\)/,
|
||||
);
|
||||
assert.match(contourContract, /telemetry_poll_interval_seconds: number/);
|
||||
assert.match(pollIntervalContract, /MIN_TELEMETRY_POLL_INTERVAL_SECONDS\s*=\s*1/);
|
||||
assert.match(telemetryPolling, /normalizeWorkerTelemetryPollMilliseconds/);
|
||||
assert.match(styles, /system-telemetry\.css/);
|
||||
});
|
||||
|
||||
test("MQTT polling interval keeps an unrestricted draft until explicit commit", async () => {
|
||||
const source = await read("core/system/telemetryPollInterval.ts");
|
||||
const javascript = ts.transpileModule(source, {
|
||||
compilerOptions: {
|
||||
module: ts.ModuleKind.ES2022,
|
||||
target: ts.ScriptTarget.ES2022,
|
||||
},
|
||||
}).outputText;
|
||||
const contract = await import(
|
||||
`data:text/javascript;base64,${Buffer.from(javascript).toString("base64")}`
|
||||
);
|
||||
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft(""), null);
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft("0"), null);
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft("0,1"), null);
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft("0.1"), null);
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft("1"), 1);
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft("60"), 60);
|
||||
assert.equal(contract.parseTelemetryPollIntervalDraft("61"), null);
|
||||
|
||||
assert.deepEqual(contract.resolveTelemetryPollIntervalDraft("", 3), {
|
||||
accepted: false,
|
||||
draft: "3",
|
||||
seconds: 3,
|
||||
});
|
||||
assert.deepEqual(contract.resolveTelemetryPollIntervalDraft("01", 3), {
|
||||
accepted: true,
|
||||
draft: "1",
|
||||
seconds: 1,
|
||||
});
|
||||
assert.equal(contract.normalizeWorkerTelemetryPollMilliseconds(100), 1_000);
|
||||
assert.equal(contract.normalizeWorkerTelemetryPollMilliseconds(3_000), 3_000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user