refactor(MQTT Node): Refactor, fix duplicate triggers, and add Unit tests (#9847)

Co-authored-by: Elias Meire <elias@meire.dev>
This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2024-06-24 18:51:59 +02:00
committed by GitHub
parent e51de9d391
commit 164ec72c0d
8 changed files with 420 additions and 271 deletions

View File

@@ -0,0 +1,38 @@
import { MqttClient } from 'mqtt';
import { mock } from 'jest-mock-extended';
import { createClient, type MqttCredential } from '../GenericFunctions';
describe('createClient', () => {
const mockConnect = jest.spyOn(MqttClient.prototype, 'connect').mockImplementation(function (
this: MqttClient,
) {
setImmediate(() => this.emit('connect', mock()));
return this;
});
beforeEach(() => jest.clearAllMocks());
it('should create a client with minimal credentials', async () => {
const credentials = mock<MqttCredential>({
protocol: 'mqtt',
host: 'localhost',
port: 1883,
clean: true,
clientId: 'testClient',
ssl: false,
});
const client = await createClient(credentials);
expect(mockConnect).toBeCalledTimes(1);
expect(client).toBeDefined();
expect(client).toBeInstanceOf(MqttClient);
expect(client.options).toMatchObject({
protocol: 'mqtt',
host: 'localhost',
port: 1883,
clean: true,
clientId: 'testClient',
});
});
});