62 lines
2.6 KiB
Dart
62 lines
2.6 KiB
Dart
|
|
// 功能:本人设备搜索、类型筛选和未知状态展示;版本: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);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|