71 lines
2.4 KiB
Dart
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,
|
|
},
|
|
]);
|
|
});
|
|
}
|