123 lines
4.3 KiB
Dart
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);
|
|
});
|
|
}
|