From 40a67d72328d0b4ed5bd62942ebc7608cb458c5b Mon Sep 17 00:00:00 2001 From: ConnorQi01 Date: Mon, 25 May 2026 18:04:43 +0800 Subject: [PATCH] Add Network Inspector command tests --- .../startStopCommands.test.ts | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 test/extension/networkInspector/startStopCommands.test.ts diff --git a/test/extension/networkInspector/startStopCommands.test.ts b/test/extension/networkInspector/startStopCommands.test.ts new file mode 100644 index 000000000..c2c1111a6 --- /dev/null +++ b/test/extension/networkInspector/startStopCommands.test.ts @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for details. + +import assert = require("assert"); +import * as sinon from "sinon"; +import proxyquire = require("proxyquire"); + +suite("startStopCommands", function () { + const fakeProject = { + getPackager: () => ({ + getProjectPath: () => "/workspace/project", + }), + }; + + const createCommandModule = (isRunning: boolean = false) => { + const fakeManager = { + isRunning: sinon.stub().returns(isRunning), + start: sinon.stub().returns(Promise.resolve()), + stop: sinon.stub().returns(Promise.resolve()), + }; + const logger = { + info: sinon.stub(), + }; + + function FakeNetworkInspectorManager() { + return fakeManager; + } + + class FakeCommand { + static formInstance() { + return new this(); + } + } + + const module = proxyquire.noCallThru()("../../../src/extension/commands/networkInspector", { + "./util/command": { + Command: FakeCommand, + }, + "./networkInspectorManager": { + NetworkInspectorManager: FakeNetworkInspectorManager, + }, + "../log/OutputChannelLogger": { + OutputChannelLogger: { + getMainChannel: sinon.stub().returns(logger), + }, + }, + }) as typeof import("../../../src/extension/commands/networkInspector"); + + return { + StartNetworkInspector: module.StartNetworkInspector, + StopNetworkInspector: module.StopNetworkInspector, + fakeManager, + logger, + }; + }; + + test("should start the Network Inspector when it is not running", async () => { + const { StartNetworkInspector, fakeManager, logger } = createCommandModule(); + const command = StartNetworkInspector.formInstance(); + (command as any).project = fakeProject; + + await command.baseFn(); + + assert.strictEqual(fakeManager.isRunning.calledOnce, true); + assert.strictEqual(fakeManager.start.calledOnce, true); + assert.strictEqual(fakeManager.start.firstCall.args[0], fakeProject); + assert.strictEqual(logger.info.called, false); + }); + + test("should log and return early when the Network Inspector is already running", async () => { + const { StartNetworkInspector, fakeManager, logger } = createCommandModule(true); + const command = StartNetworkInspector.formInstance(); + (command as any).project = fakeProject; + + await command.baseFn(); + + assert.strictEqual(fakeManager.isRunning.calledOnce, true); + assert.strictEqual(fakeManager.start.called, false); + assert.strictEqual(logger.info.calledOnce, true); + assert.strictEqual( + logger.info.firstCall.args[0], + "Another Network inspector is already running", + ); + }); + + test("should stop the Network Inspector", async () => { + const { StopNetworkInspector, fakeManager } = createCommandModule(); + const command = StopNetworkInspector.formInstance(); + + await command.baseFn(); + + assert.strictEqual(fakeManager.stop.calledOnce, true); + }); +});