diff --git a/source/event_hub.ts b/source/event_hub.ts index 5cb0ae8..2eb0e44 100644 --- a/source/event_hub.ts +++ b/source/event_hub.ts @@ -407,7 +407,6 @@ export class EventHub { } return true; }); - return hasFoundSubscriberToRemove; } @@ -612,4 +611,14 @@ export class EventHub { }); return this.publish(replyEvent); } + + /** + * Disconnect from event server. + */ + disconnect() { + if (this._socketIo) { + this._socketIo.disconnect(); + this._socketIo = null; + } + } } diff --git a/test/event_hub.test.ts b/test/event_hub.test.ts index a9bd432..afdac3c 100644 --- a/test/event_hub.test.ts +++ b/test/event_hub.test.ts @@ -4,13 +4,15 @@ import { vi, describe, expect, beforeEach, afterEach, test } from "vitest"; describe("EventHub", () => { let eventHub: any; - + let disconnectCalled = false; beforeEach(() => { eventHub = new EventHub("", "", ""); + disconnectCalled = false; eventHub._socketIo = { on: vi.fn(), emit: vi.fn(), socket: { connected: true }, + disconnect: vi.fn(() => (disconnectCalled = true)), }; eventHub.isConnected = vi.fn(() => true); }); @@ -239,6 +241,11 @@ describe("EventHub", () => { }; expect(EventData).toEqual(expectedEvent); }); + + test("Disconnecting should disconnect the socket", () => { + eventHub.disconnect(); + expect(disconnectCalled).toBe(true); + }); }); test("EventHub constructor", async () => {