@@ -18,9 +18,6 @@ import * as settings from '../../lib/util/settings';
18
18
19
19
const BASE_DIR = 'external_converters' ;
20
20
21
- // @ts -expect-error TODO: remove, tmp until implemented
22
- zhc . removeDefinition = jest . fn ( ) ;
23
-
24
21
describe ( 'Extension: ExternalConverters' , ( ) => {
25
22
const mockBasePath = path . join ( data . mockDir , BASE_DIR ) ;
26
23
let controller : Controller ;
@@ -32,7 +29,7 @@ describe('Extension: ExternalConverters', () => {
32
29
const writeFileSyncSpy = jest . spyOn ( fs , 'writeFileSync' ) ;
33
30
34
31
const zhcAddDefinitionSpy = jest . spyOn ( zhc , 'addDefinition' ) ;
35
- const zhcRemoveDefinitionSpy = jest . spyOn ( zhc , 'removeDefinition ' ) ;
32
+ const zhcRemoveExternalDefinitionsSpy = jest . spyOn ( zhc , 'removeExternalDefinitions ' ) ;
36
33
37
34
const mocksClear = [
38
35
mockMQTT . end ,
@@ -47,7 +44,7 @@ describe('Extension: ExternalConverters', () => {
47
44
rmSyncSpy ,
48
45
writeFileSyncSpy ,
49
46
zhcAddDefinitionSpy ,
50
- zhcRemoveDefinitionSpy ,
47
+ zhcRemoveExternalDefinitionsSpy ,
51
48
] ;
52
49
53
50
const useAssets = ( ) : void => {
@@ -72,6 +69,7 @@ describe('Extension: ExternalConverters', () => {
72
69
} ) ;
73
70
74
71
beforeEach ( async ( ) => {
72
+ zhc . removeExternalDefinitions ( ) ; // remove all external converters
75
73
mocksClear . forEach ( ( m ) => m . mockClear ( ) ) ;
76
74
data . writeDefaultConfiguration ( ) ;
77
75
data . writeDefaultState ( ) ;
@@ -81,8 +79,10 @@ describe('Extension: ExternalConverters', () => {
81
79
controller = new Controller ( jest . fn ( ) , jest . fn ( ) ) ;
82
80
} ) ;
83
81
84
- afterEach ( ( ) => {
82
+ afterEach ( async ( ) => {
85
83
fs . rmSync ( mockBasePath , { recursive : true , force : true } ) ;
84
+
85
+ await controller ?. stop ( ) ;
86
86
} ) ;
87
87
88
88
it ( 'loads nothing from folder' , async ( ) => {
@@ -100,7 +100,7 @@ describe('Extension: ExternalConverters', () => {
100
100
await controller . start ( ) ;
101
101
await flushPromises ( ) ;
102
102
103
- expect ( getZ2MDevice ( devices . external_converter_device ) ! . definition ) . toMatchObject ( {
103
+ expect ( getZ2MDevice ( devices . external_converter_device ) . definition ) . toMatchObject ( {
104
104
description : 'external' ,
105
105
model : 'external_converter_device' ,
106
106
vendor : 'external' ,
@@ -115,7 +115,9 @@ describe('Extension: ExternalConverters', () => {
115
115
{ retain : true , qos : 0 } ,
116
116
expect . any ( Function ) ,
117
117
) ;
118
- expect ( zhcRemoveDefinitionSpy ) . toHaveBeenCalledTimes ( 3 ) ;
118
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenCalledTimes ( 2 ) ;
119
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenNthCalledWith ( 1 , 'mock-external-converter-multiple.js' ) ;
120
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenNthCalledWith ( 2 , 'mock-external-converter.js' ) ;
119
121
expect ( zhcAddDefinitionSpy ) . toHaveBeenNthCalledWith (
120
122
1 ,
121
123
expect . objectContaining ( {
@@ -157,7 +159,7 @@ describe('Extension: ExternalConverters', () => {
157
159
await flushPromises ( ) ;
158
160
mocksClear . forEach ( ( m ) => m . mockClear ( ) ) ;
159
161
160
- expect ( getZ2MDevice ( devices . external_converter_device ) ! . definition ) . toMatchObject ( {
162
+ expect ( getZ2MDevice ( devices . external_converter_device ) . definition ) . toMatchObject ( {
161
163
description : 'Automatically generated definition' ,
162
164
model : 'external_converter_device' ,
163
165
vendor : '' ,
@@ -168,15 +170,16 @@ describe('Extension: ExternalConverters', () => {
168
170
mockMQTTEvents . message ( 'zigbee2mqtt/bridge/request/converter/save' , stringify ( { name : converterName , code : converterCode } ) ) ;
169
171
await flushPromises ( ) ;
170
172
171
- expect ( getZ2MDevice ( devices . external_converter_device ) ! . definition ) . toMatchObject ( {
173
+ expect ( getZ2MDevice ( devices . external_converter_device ) . definition ) . toMatchObject ( {
172
174
description : 'external' ,
173
175
model : 'external_converter_device' ,
174
176
vendor : 'external' ,
175
177
zigbeeModel : [ 'external_converter_device' ] ,
176
178
} ) ;
177
179
expect ( mkdirSyncSpy ) . toHaveBeenCalledWith ( mockBasePath , { recursive : true } ) ;
178
180
expect ( writeFileSyncSpy ) . toHaveBeenCalledWith ( converterFilePath , converterCode , 'utf8' ) ;
179
- expect ( zhcRemoveDefinitionSpy ) . toHaveBeenCalledTimes ( 1 ) ;
181
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenCalledTimes ( 1 ) ;
182
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenNthCalledWith ( 1 , converterName ) ;
180
183
expect ( zhcAddDefinitionSpy ) . toHaveBeenCalledWith (
181
184
expect . objectContaining ( {
182
185
mock : true ,
@@ -197,22 +200,15 @@ describe('Extension: ExternalConverters', () => {
197
200
mockMQTTEvents . message ( 'zigbee2mqtt/bridge/request/converter/remove' , stringify ( { name : converterName } ) ) ;
198
201
await flushPromises ( ) ;
199
202
200
- expect ( getZ2MDevice ( devices . external_converter_device ) ! . definition ) . toMatchObject ( {
203
+ expect ( getZ2MDevice ( devices . external_converter_device ) . definition ) . toMatchObject ( {
201
204
description : 'Automatically generated definition' ,
202
205
model : 'external_converter_device' ,
203
206
vendor : '' ,
204
207
zigbeeModel : [ 'external_converter_device' ] ,
205
208
} ) ;
206
209
expect ( rmSyncSpy ) . toHaveBeenCalledWith ( converterFilePath , { force : true } ) ;
207
- expect ( zhcRemoveDefinitionSpy ) . toHaveBeenCalledWith (
208
- expect . objectContaining ( {
209
- mock : true ,
210
- zigbeeModel : [ 'external_converter_device' ] ,
211
- vendor : 'external' ,
212
- model : 'external_converter_device' ,
213
- description : 'external' ,
214
- } ) ,
215
- ) ;
210
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenCalledTimes ( 2 ) ;
211
+ expect ( zhcRemoveExternalDefinitionsSpy ) . toHaveBeenNthCalledWith ( 2 , converterName ) ;
216
212
expect ( mockMQTT . publish ) . toHaveBeenCalledWith ( 'zigbee2mqtt/bridge/converters' , stringify ( [ ] ) , { retain : true , qos : 0 } , expect . any ( Function ) ) ;
217
213
} ) ;
218
214
@@ -299,7 +295,7 @@ describe('Extension: ExternalConverters', () => {
299
295
300
296
const errorMsg = `Failed to remove definition` ;
301
297
302
- zhcRemoveDefinitionSpy . mockImplementationOnce ( ( ) => {
298
+ zhcRemoveExternalDefinitionsSpy . mockImplementationOnce ( ( ) => {
303
299
throw new Error ( errorMsg ) ;
304
300
} ) ;
305
301
0 commit comments