Files
biz_xfj_cloud/test/pages/terminal/setting_components_test.dart
T
dzc 8cfbbd768e feat:"收银"页面副屏的支付成功状态。
feat:"收银"弹框增加重新识别功能。
2026-08-14 18:41:13 +08:00

123 lines
4.3 KiB
Dart

import 'package:ducafe_ui_core/ducafe_ui_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:forui/forui.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
import 'package:pj_supermarket_cloud/pages/terminal/setting/widgets/setting_components.dart';
import 'package:pj_supermarket_cloud/pages/terminal/setting/widgets/setting_pay_type_editor.dart';
void main() {
test('饭卡、人脸、人民医院和超市消费卡默认允许重新识别', () {
expect(
AppSettingTool.defaultCashierReidentifiablePayTypes,
const {
OrderPayDisplayType.walletCard,
OrderPayDisplayType.face,
OrderPayDisplayType.rmyy,
OrderPayDisplayType.csxfk,
},
);
});
testWidgets('分段选择器在页面设置宽度内可容纳八个支付选项', (tester) async {
await tester.binding.setSurfaceSize(const Size(1920, 1080));
addTearDown(() => tester.binding.setSurfaceSize(null));
var selected = 0;
await tester.pumpWidget(
ScreenUtilInit(
designSize: const Size(1920, 1080),
builder: (_, __) => MaterialApp(
home: FTheme(
data: FThemes.zinc.light,
child: Scaffold(
body: StatefulBuilder(
builder: (context, setState) => SettingSegmentedSelector<int>(
label: '收银默认项',
value: selected,
options: const {
0: '扫一扫',
1: '二维码',
2: '饭卡',
3: '人脸',
4: '现金',
5: '中医院',
6: '人民医院',
7: '超市消费卡',
},
onChanged: (value) => setState(() => selected = value),
).width(1178),
),
),
),
),
),
);
expect(tester.takeException(), isNull);
final lastOption = find.ancestor(
of: find.text('超市消费卡'),
matching: find.byType(InkWell),
);
expect(tester.getSize(lastOption).height, greaterThanOrEqualTo(48));
await tester.tap(find.text('超市消费卡'));
await tester.pump();
expect(selected, 7);
expect(tester.takeException(), isNull);
});
testWidgets('支付方式表格可逐项切换重新识别并同步文字状态', (tester) async {
await tester.binding.setSurfaceSize(const Size(1920, 1080));
addTearDown(() => tester.binding.setSurfaceSize(null));
final reidentifiableTypes = <OrderPayDisplayType>{
OrderPayDisplayType.qrCodeScan,
};
await tester.pumpWidget(
ScreenUtilInit(
designSize: const Size(1920, 1080),
builder: (_, __) => MaterialApp(
home: FTheme(
data: FThemes.zinc.light,
child: Scaffold(
body: StatefulBuilder(
builder: (context, setState) => SingleChildScrollView(
child: SettingPayTypeEditor(
order: const [OrderPayDisplayType.qrCodeScan],
visibleTypes: const {OrderPayDisplayType.qrCodeScan},
reidentifiableTypes: reidentifiableTypes,
defaultType: OrderPayDisplayType.qrCodeScan,
onReset: () {},
onReorder: (_, __) {},
onVisibilityToggle: (_) {},
onReidentifiableToggle: (type) => setState(() {
if (!reidentifiableTypes.remove(type)) {
reidentifiableTypes.add(type);
}
}),
).width(1600),
),
),
),
),
),
),
);
expect(find.text('是否允许重新识别'), findsOneWidget);
expect(find.text('允许'), findsOneWidget);
final switchFinder = find.bySemanticsLabel('二维码扫一扫允许重新识别');
expect(switchFinder, findsOneWidget);
await tester.tap(switchFinder);
await tester.pump();
expect(find.text('不允许'), findsOneWidget);
expect(
find.bySemanticsLabel('二维码扫一扫不允许重新识别'),
findsOneWidget,
);
expect(tester.takeException(), isNull);
});
}