Refactor USB port handling to introduce display labels and improve state management

This commit is contained in:
just_stuff_tm
2026-03-02 15:54:39 -05:00
committed by just-stuff-tm
parent a0feb129e1
commit 5216e00807
5 changed files with 80 additions and 27 deletions
+32
View File
@@ -21,6 +21,7 @@ class _FakeMeshCoreConnector extends MeshCoreConnector {
int connectUsbCalls = 0;
String? lastConnectPortName;
String? fakeActiveUsbPort;
String? fakeActiveUsbPortDisplayLabel;
bool fakeUsbTransportConnected = false;
@override
@@ -29,6 +30,10 @@ class _FakeMeshCoreConnector extends MeshCoreConnector {
@override
String? get activeUsbPort => fakeActiveUsbPort;
@override
String? get activeUsbPortDisplayLabel =>
fakeActiveUsbPortDisplayLabel ?? fakeActiveUsbPort;
@override
bool get isUsbTransportConnected => fakeUsbTransportConnected;
@@ -99,6 +104,33 @@ void main() {
},
);
testWidgets(
'UsbScreen keeps raw selection while showing connector USB display label',
(tester) async {
final connector = _FakeMeshCoreConnector(
ports: <String>['COM6 - USB Serial Device (COM6)'],
);
await tester.pumpWidget(
_buildTestApp(connector: connector, child: const UsbScreen()),
);
await tester.pumpAndSettle();
connector.fakeActiveUsbPortDisplayLabel =
'COM6 - KD3CGK mesh-utility.org';
connector.notifyListeners();
await tester.pump();
expect(find.text('KD3CGK mesh-utility.org'), findsOneWidget);
await tester.tap(find.widgetWithText(FilledButton, 'Connect'));
await tester.pump();
expect(connector.connectUsbCalls, 1);
expect(connector.lastConnectPortName, 'COM6');
},
);
testWidgets('ConnectionChoiceScreen USB button reflects platform support', (
tester,
) async {