@@ -22,9 +22,16 @@ import { BoardsDataStore } from '../../browser/boards/boards-data-store';
22
22
import { BoardsServiceProvider } from '../../browser/boards/boards-service-provider' ;
23
23
import { NotificationCenter } from '../../browser/notification-center' ;
24
24
import { StorageWrapper } from '../../browser/storage-wrapper' ;
25
- import { BoardsService , Port } from '../../common/protocol/boards-service' ;
25
+ import {
26
+ BoardsConfigChangeEvent ,
27
+ BoardsService ,
28
+ Port ,
29
+ PortIdentifierChangeEvent ,
30
+ BoardIdentifierChangeEvent ,
31
+ } from '../../common/protocol/boards-service' ;
26
32
import { NotificationServiceServer } from '../../common/protocol/notification-service' ;
27
33
import { bindCommon } from '../common/common-test-bindings' ;
34
+
28
35
import {
29
36
detectedPort ,
30
37
esp32S3DevModule ,
@@ -62,6 +69,169 @@ describe('board-service-provider', () => {
62
69
toDisposeAfterEach . dispose ( ) ;
63
70
} ) ;
64
71
72
+ it ( 'should update the port (port identifier)' , ( ) => {
73
+ boardsServiceProvider [ '_boardsConfig' ] = {
74
+ selectedBoard : uno ,
75
+ selectedPort : unoSerialPort ,
76
+ } ;
77
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
78
+ toDisposeAfterEach . push (
79
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
80
+ events . push ( event )
81
+ )
82
+ ) ;
83
+ const didUpdate = boardsServiceProvider . updateConfig ( mkr1000SerialPort ) ;
84
+ expect ( didUpdate ) . to . be . true ;
85
+ const expectedEvent : PortIdentifierChangeEvent = {
86
+ previousSelectedPort : unoSerialPort ,
87
+ selectedPort : mkr1000SerialPort ,
88
+ } ;
89
+ expect ( events ) . deep . equals ( [ expectedEvent ] ) ;
90
+ } ) ;
91
+
92
+ it ( 'should update the port (boards config)' , ( ) => {
93
+ boardsServiceProvider [ '_boardsConfig' ] = {
94
+ selectedBoard : uno ,
95
+ selectedPort : unoSerialPort ,
96
+ } ;
97
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
98
+ toDisposeAfterEach . push (
99
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
100
+ events . push ( event )
101
+ )
102
+ ) ;
103
+ const didUpdate = boardsServiceProvider . updateConfig ( {
104
+ selectedPort : mkr1000SerialPort ,
105
+ selectedBoard : uno ,
106
+ } ) ;
107
+ expect ( didUpdate ) . to . be . true ;
108
+ const expectedEvent : PortIdentifierChangeEvent = {
109
+ previousSelectedPort : unoSerialPort ,
110
+ selectedPort : mkr1000SerialPort ,
111
+ } ;
112
+ expect ( events ) . deep . equals ( [ expectedEvent ] ) ;
113
+ } ) ;
114
+
115
+ it ( 'should not update the port if did not change (port identifier)' , ( ) => {
116
+ boardsServiceProvider [ '_boardsConfig' ] = {
117
+ selectedBoard : uno ,
118
+ selectedPort : unoSerialPort ,
119
+ } ;
120
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
121
+ toDisposeAfterEach . push (
122
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
123
+ events . push ( event )
124
+ )
125
+ ) ;
126
+ const didUpdate = boardsServiceProvider . updateConfig ( unoSerialPort ) ;
127
+ expect ( didUpdate ) . to . be . false ;
128
+ expect ( events ) . to . be . empty ;
129
+ } ) ;
130
+
131
+ it ( 'should update the board (board identifier)' , ( ) => {
132
+ boardsServiceProvider [ '_boardsConfig' ] = {
133
+ selectedBoard : uno ,
134
+ selectedPort : unoSerialPort ,
135
+ } ;
136
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
137
+ toDisposeAfterEach . push (
138
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
139
+ events . push ( event )
140
+ )
141
+ ) ;
142
+ const didUpdate = boardsServiceProvider . updateConfig ( mkr1000 ) ;
143
+ expect ( didUpdate ) . to . be . true ;
144
+ const expectedEvent : BoardIdentifierChangeEvent = {
145
+ previousSelectedBoard : uno ,
146
+ selectedBoard : mkr1000 ,
147
+ } ;
148
+ expect ( events ) . deep . equals ( [ expectedEvent ] ) ;
149
+ } ) ;
150
+
151
+ it ( 'should update the board (boards config)' , ( ) => {
152
+ boardsServiceProvider [ '_boardsConfig' ] = {
153
+ selectedBoard : uno ,
154
+ selectedPort : unoSerialPort ,
155
+ } ;
156
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
157
+ toDisposeAfterEach . push (
158
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
159
+ events . push ( event )
160
+ )
161
+ ) ;
162
+ const didUpdate = boardsServiceProvider . updateConfig ( {
163
+ selectedBoard : mkr1000 ,
164
+ selectedPort : unoSerialPort ,
165
+ } ) ;
166
+ expect ( didUpdate ) . to . be . true ;
167
+ const expectedEvent : BoardIdentifierChangeEvent = {
168
+ previousSelectedBoard : uno ,
169
+ selectedBoard : mkr1000 ,
170
+ } ;
171
+ expect ( events ) . deep . equals ( [ expectedEvent ] ) ;
172
+ } ) ;
173
+
174
+ it ( 'should not update the board if did not change (board identifier)' , ( ) => {
175
+ boardsServiceProvider [ '_boardsConfig' ] = {
176
+ selectedBoard : uno ,
177
+ selectedPort : unoSerialPort ,
178
+ } ;
179
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
180
+ toDisposeAfterEach . push (
181
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
182
+ events . push ( event )
183
+ )
184
+ ) ;
185
+ const didUpdate = boardsServiceProvider . updateConfig ( uno ) ;
186
+ expect ( didUpdate ) . to . be . false ;
187
+ expect ( events ) . to . be . empty ;
188
+ } ) ;
189
+
190
+ it ( 'should update both the board and port' , ( ) => {
191
+ boardsServiceProvider [ '_boardsConfig' ] = {
192
+ selectedBoard : uno ,
193
+ selectedPort : unoSerialPort ,
194
+ } ;
195
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
196
+ toDisposeAfterEach . push (
197
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
198
+ events . push ( event )
199
+ )
200
+ ) ;
201
+ const didUpdate = boardsServiceProvider . updateConfig ( {
202
+ selectedBoard : mkr1000 ,
203
+ selectedPort : mkr1000SerialPort ,
204
+ } ) ;
205
+ expect ( didUpdate ) . to . be . true ;
206
+ const expectedEvent : BoardIdentifierChangeEvent &
207
+ PortIdentifierChangeEvent = {
208
+ previousSelectedBoard : uno ,
209
+ selectedBoard : mkr1000 ,
210
+ previousSelectedPort : unoSerialPort ,
211
+ selectedPort : mkr1000SerialPort ,
212
+ } ;
213
+ expect ( events ) . deep . equals ( [ expectedEvent ] ) ;
214
+ } ) ;
215
+
216
+ it ( 'should update neither the board nor the port if did not change' , ( ) => {
217
+ boardsServiceProvider [ '_boardsConfig' ] = {
218
+ selectedBoard : uno ,
219
+ selectedPort : unoSerialPort ,
220
+ } ;
221
+ const events : BoardsConfigChangeEvent [ ] = [ ] ;
222
+ toDisposeAfterEach . push (
223
+ boardsServiceProvider . onBoardsConfigDidChange ( ( event ) =>
224
+ events . push ( event )
225
+ )
226
+ ) ;
227
+ const didUpdate = boardsServiceProvider . updateConfig ( {
228
+ selectedBoard : uno ,
229
+ selectedPort : unoSerialPort ,
230
+ } ) ;
231
+ expect ( didUpdate ) . to . be . false ;
232
+ expect ( events ) . to . be . empty ;
233
+ } ) ;
234
+
65
235
it ( 'should detect a port change and find selection index' , ( ) => {
66
236
let boardList = boardsServiceProvider . boardList ;
67
237
const didUpdate = boardsServiceProvider . updateConfig ( {
0 commit comments