Files
platforms/apps/user_app/test/ui/devices_page_test.dart

62 lines
2.6 KiB
Dart
Raw Permalink Normal View History

// 功能本人设备搜索、类型筛选和未知状态展示版本1.0.0。
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:user_app/domain/models/client_models.dart';
import 'package:user_app/domain/models/device_group.dart';
import 'package:user_app/ui/features/profile/devices_page.dart';
import '../support/a1_fixture.dart';
class _DeviceFixture extends A1FixtureRepository {
@override
Future<List<ClientRecord>> devices() async => [
ClientRecord(identity: 'valve', title: '厨房阀门', subtitle: 'V001', raw: {'kind': 'valve'}),
ClientRecord(identity: 'alarm', title: '厨房报警器', subtitle: 'A002', raw: {'kind': 'alarm'}),
];
@override
Future<List<DeviceGroup>> deviceGroups() async => const [
DeviceGroup(identity: 'kitchen', name: '厨房组', sortNo: 0, deviceIdentities: {'valve', 'alarm'}),
];
}
void main() {
testWidgets('按类型及编号筛选,未知状态不冒充零告警或离线', (tester) async {
await tester.pumpWidget(MaterialApp(home: DevicesPage(repository: _DeviceFixture())));
await tester.pumpAndSettle();
expect(find.text(''), findsNWidgets(3));
expect(find.text('厨房组'), findsOneWidget);
expect(find.text('厨房阀门'), findsOneWidget);
await tester.tap(find.text('报警器'));
await tester.pumpAndSettle();
expect(find.text('厨房阀门'), findsNothing);
expect(find.text('厨房报警器'), findsOneWidget);
await tester.enterText(find.byType(TextField), 'V001');
await tester.pumpAndSettle();
expect(find.text('没有符合条件的设备'), findsOneWidget);
await tester.tap(find.text('全部'));
await tester.pumpAndSettle();
expect(find.text('厨房阀门'), findsOneWidget);
await tester.tap(find.text('控制'));
await tester.pumpAndSettle();
expect(find.text('该功能暂未开放,目前无法使用。'), findsOneWidget);
});
for (final width in [320.0, 390.0, 430.0]) {
testWidgets('设备页$width宽度放大字体无溢出', (tester) async {
tester.view.physicalSize = Size(width, 844);
tester.view.devicePixelRatio = 1;
addTearDown(tester.view.resetPhysicalSize);
addTearDown(tester.view.resetDevicePixelRatio);
await tester.pumpWidget(
MaterialApp(
builder: (context, child) => MediaQuery(
data: MediaQuery.of(context).copyWith(textScaler: const TextScaler.linear(1.3)),
child: child!,
),
home: DevicesPage(repository: _DeviceFixture()),
),
);
await tester.pumpAndSettle();
expect(tester.takeException(), isNull);
});
}
}