Files
NetMesh/application/state/sftp/externalUploadRuntime.test.ts

40 lines
1.4 KiB
TypeScript
Raw Normal View History

import test from "node:test";
import assert from "node:assert/strict";
import { UploadController } from "../../../lib/uploadService";
import {
cancelExternalUploadRuntime,
getExternalUploadController,
registerExternalUploadController,
resetExternalUploadRuntimeForTests,
unregisterExternalUploadController,
} from "./externalUploadRuntime";
test("external upload controls survive their originating panel unmount", async (t) => {
resetExternalUploadRuntimeForTests();
t.after(resetExternalUploadRuntimeForTests);
const cancelled: string[] = [];
const controller = new UploadController();
controller.setBridge({
mkdirSftp: async () => {},
cancelTransfer: async (transferId) => {
cancelled.push(transferId);
},
});
controller.addActiveTransfer("child-1");
registerExternalUploadController("folder-1", controller);
registerExternalUploadController("child-1", controller);
// A React panel unmount does not unregister process-level upload controls.
assert.equal(getExternalUploadController("folder-1"), controller);
await cancelExternalUploadRuntime("folder-1");
assert.equal(controller.isCancelled(), true);
assert.deepEqual(cancelled, ["child-1"]);
unregisterExternalUploadController(controller);
assert.equal(getExternalUploadController("folder-1"), undefined);
assert.equal(getExternalUploadController("child-1"), undefined);
});