mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-10-23 06:12:23 +00:00
fix: Do not call start() on extensions twice when starting (#27032)
This commit is contained in:
1 parent
850f0820ac
commit
7fb10b1dcb
3 files changed
+23
-3
No files matched your search
@@ -126,6 +126,16 @@ describe('Extension: ExternalExtensions', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('starts extensions only once', async () => {
|
||||
useAssets('mjs');
|
||||
|
||||
await controller.start();
|
||||
await flushPromises();
|
||||
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith('zigbee2mqtt/example/extension/counter', 'start 0', {retain: false, qos: 0});
|
||||
expect(mockMQTTPublishAsync).not.toHaveBeenCalledWith('zigbee2mqtt/example/extension/counter', 'start 1', {retain: false, qos: 0});
|
||||
});
|
||||
|
||||
it('loads all valid extensions, relocates & skips ones with errors', async () => {
|
||||
useAssets('mjs');
|
||||
|
||||
@@ -169,7 +179,9 @@ describe('Extension: ExternalExtensions', () => {
|
||||
{retain: true, qos: 0},
|
||||
);
|
||||
|
||||
extensionCode = extensionCode.replace("'call from start'", "'call from start - edited'");
|
||||
extensionCode = extensionCode
|
||||
.replace("'call from start'", "'call from start - edited'")
|
||||
.replace("'call from stop'", "'call from stop - edited'");
|
||||
|
||||
mockMQTTPublishAsync.mockClear();
|
||||
await (controller.getExtension('ExternalExtensions')! as ExternalExtensions).onMQTTMessage({
|
||||
@@ -177,6 +189,7 @@ describe('Extension: ExternalExtensions', () => {
|
||||
message: {name: extensionName, code: extensionCode},
|
||||
});
|
||||
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith('zigbee2mqtt/example/extension', 'call from stop', {retain: false, qos: 0});
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith('zigbee2mqtt/example/extension', 'call from start - edited', {retain: false, qos: 0});
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith(
|
||||
'zigbee2mqtt/bridge/extensions',
|
||||
@@ -187,7 +200,9 @@ describe('Extension: ExternalExtensions', () => {
|
||||
{retain: true, qos: 0},
|
||||
);
|
||||
|
||||
extensionCode = extensionCode.replace("'call from start - edited'", "'call from start'");
|
||||
extensionCode = extensionCode
|
||||
.replace("'call from start - edited'", "'call from start'")
|
||||
.replace("'call from stop - edited'", "'call from stop'");
|
||||
|
||||
mockMQTTPublishAsync.mockClear();
|
||||
await (controller.getExtension('ExternalExtensions')! as ExternalExtensions).onMQTTMessage({
|
||||
@@ -195,6 +210,7 @@ describe('Extension: ExternalExtensions', () => {
|
||||
message: {name: 'exampleExtension.1.js', code: extensionCode},
|
||||
});
|
||||
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith('zigbee2mqtt/example/extension', 'call from stop - edited', {retain: false, qos: 0});
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith('zigbee2mqtt/example/extension', 'call from start', {retain: false, qos: 0});
|
||||
expect(mockMQTTPublishAsync).toHaveBeenCalledWith(
|
||||
'zigbee2mqtt/bridge/extensions',
|
||||
|
||||
Reference in new issue
Block a user