Files
biz_xfj_cloud/test/common/terminal_device_status_control_test.dart
T
2026-08-06 20:55:09 +08:00

71 lines
2.4 KiB
Dart

import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
/// 验证顶部设备状态逐项显隐的默认值、配置恢复与连续写入顺序。
void main() {
test('顶部设备状态隐藏集合默认为空且五项全部显示', () async {
final control = TerminalDeviceStatusControl(
loadHiddenDevices: () async => <TerminalDeviceType>{},
saveHiddenDevices: (_) async {},
);
await control.initAsync();
expect(control.hiddenHeaderDevices, isEmpty);
expect(control.hasVisibleHeaderDevices, isTrue);
for (final device in TerminalDeviceType.values) {
expect(control.isHeaderDeviceVisible(device), isTrue);
}
});
test('顶部设备状态可以从本机缓存恢复单项隐藏', () async {
final control = TerminalDeviceStatusControl(
loadHiddenDevices: () async => {TerminalDeviceType.camera},
saveHiddenDevices: (_) async {},
);
await control.initAsync();
expect(control.isHeaderDeviceVisible(TerminalDeviceType.camera), isFalse);
expect(control.isHeaderDeviceVisible(TerminalDeviceType.printer), isTrue);
});
test('不同设备连续切换会立即响应并串行保存最终隐藏集合', () async {
final firstSave = Completer<void>();
final saved = <Set<TerminalDeviceType>>[];
final control = TerminalDeviceStatusControl(
loadHiddenDevices: () async => <TerminalDeviceType>{},
saveHiddenDevices: (hiddenDevices) {
saved.add(Set<TerminalDeviceType>.from(hiddenDevices));
return saved.length == 1 ? firstSave.future : Future<void>.value();
},
);
final firstPersist = control.setHeaderDeviceVisible(
TerminalDeviceType.printer,
false,
);
expect(control.isHeaderDeviceVisible(TerminalDeviceType.printer), isFalse);
final finalPersist = control.setHeaderDeviceVisible(
TerminalDeviceType.camera,
false,
);
expect(control.isHeaderDeviceVisible(TerminalDeviceType.camera), isFalse);
expect(saved, [
<TerminalDeviceType>{TerminalDeviceType.printer}
]);
firstSave.complete();
await Future.wait([firstPersist, finalPersist]);
expect(saved, [
<TerminalDeviceType>{TerminalDeviceType.printer},
<TerminalDeviceType>{
TerminalDeviceType.printer,
TerminalDeviceType.camera,
},
]);
});
}