Skip to content

Commit f8e8a47

Browse files
author
Akos Kitta
committed
test: board+port updates
1 parent 99b1021 commit f8e8a47

File tree

2 files changed

+173
-9
lines changed

2 files changed

+173
-9
lines changed

Diff for: arduino-ide-extension/src/browser/boards/boards-service-provider.ts

+2-8
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ import type {
5151
StartupTaskProvider,
5252
} from '../../electron-common/startup-task';
5353
import { NotificationCenter } from '../notification-center';
54-
import { BoardsDataStore } from './boards-data-store';
5554

5655
const boardListHistoryStorageKey = 'arduino-ide:boardListHistory';
5756
const selectedPortStorageKey = 'arduino-ide:selectedPort';
@@ -146,8 +145,6 @@ export class BoardsServiceProvider
146145
private readonly notificationCenter: NotificationCenter;
147146
@inject(FrontendApplicationStateService)
148147
private readonly appStateService: FrontendApplicationStateService;
149-
@inject(BoardsDataStore)
150-
private readonly boardsDataStore: BoardsDataStore;
151148
@optional()
152149
@inject(BoardListDumper)
153150
private readonly boardListDumper?: BoardListDumper;
@@ -377,11 +374,8 @@ export class BoardsServiceProvider
377374

378375
if (selectedBoard.fqbn && (reason === 'toolbar' || reason === 'inherit')) {
379376
const [, , , ...rest] = selectedBoard.fqbn.split(':');
380-
if (rest && rest.length) {
381-
console.log(
382-
typeof this.boardsDataStore,
383-
'TODO: save update data store if reason is toolbar and the FQBN has options'
384-
);
377+
if (rest.length) {
378+
// TODO: save update data store if reason is toolbar and the FQBN has options: https://github.com/arduino/arduino-ide/pull/2113
385379
}
386380
}
387381
if (

Diff for: arduino-ide-extension/src/test/browser/board-service-provider.test.ts

+171-1
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,16 @@ import { BoardsDataStore } from '../../browser/boards/boards-data-store';
2222
import { BoardsServiceProvider } from '../../browser/boards/boards-service-provider';
2323
import { NotificationCenter } from '../../browser/notification-center';
2424
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';
2632
import { NotificationServiceServer } from '../../common/protocol/notification-service';
2733
import { bindCommon } from '../common/common-test-bindings';
34+
2835
import {
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

Comments
 (0)