const MockFluidNC = require("./helpers/mockFluidNC"); const TestFluidNCClient = require("./helpers/TestFluidNCClient"); describe("FluidNCClient with MockFluidNC", () => { let mock; let client; beforeAll(async () => { // Mock-Server starten mock = new MockFluidNC("localhost", 9003); await mock.start(); }); afterAll(async () => { // Mock-Server stoppen - das stoppt alle Verbindungen await mock.stop(); }); beforeEach(() => { // Neuen Test-Client für jeden Test erstellen client = new TestFluidNCClient({ host: "localhost", port: 9003 }); }); afterEach(() => { // Client sauber schließen if (client) { client.close(); } }); test("sollte sich mit Mock-Server verbinden", async () => { // Warten bis verbunden await new Promise(resolve => setTimeout(resolve, 300)); expect(mock.getConnectedClientCount()).toBeGreaterThan(0); }); test("sollte Status Request senden", async () => { // Warten bis verbunden await new Promise(resolve => setTimeout(resolve, 300)); const messagePromise = new Promise((resolve) => { client.onMessage((msg) => { resolve(msg); }); }); client.requestStatus(); const response = await messagePromise; expect(response).toContain("Idle"); }); test("sollte Jog Command verarbeiten", async () => { // Warten bis verbunden await new Promise(resolve => setTimeout(resolve, 300)); const messagePromise = new Promise((resolve) => { client.onMessage((msg) => { resolve(msg); }); }); client.jog(true, "X", 10); const response = await messagePromise; expect(response.trim()).toBe("ok"); }); test("sollte G-Code Command verarbeiten", async () => { // Warten bis verbunden await new Promise(resolve => setTimeout(resolve, 300)); const messagePromise = new Promise((resolve) => { client.onMessage((msg) => { resolve(msg); }); }); client.sendGcode("G0 X10 Y20"); const response = await messagePromise; expect(response.trim()).toBe("ok"); // Zusätzlich prüfen, dass der korrekte Befehl empfangen wurde const receivedCommands = mock.getReceivedCommands(); expect(receivedCommands).toContain("G0 X10 Y20"); }); }, 10000);