@@ -22,9 +22,16 @@ import { BoardsDataStore } from '../../browser/boards/boards-data-store';
2222import { BoardsServiceProvider } from '../../browser/boards/boards-service-provider' ;
2323import { NotificationCenter } from '../../browser/notification-center' ;
2424import { 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' ;
2632import { NotificationServiceServer } from '../../common/protocol/notification-service' ;
2733import { bindCommon } from '../common/common-test-bindings' ;
34+
2835import {
2936 detectedPort ,
3037 esp32S3DevModule ,
@@ -62,6 +69,169 @@ describe('board-service-provider', () => {
6269 toDisposeAfterEach . dispose ( ) ;
6370 } ) ;
6471
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+
65235 it ( 'should detect a port change and find selection index' , ( ) => {
66236 let boardList = boardsServiceProvider . boardList ;
67237 const didUpdate = boardsServiceProvider . updateConfig ( {
0 commit comments