为什么:上一批归档只覆盖了「已跟踪文件的修改」,原型阶段新增的文件(app_config、theme、 home_feed/play_ticket 模型、catalog_api、测试目录等)还是未入库状态 —— 而已入库的代码会 import 它们, 留在工作区会导致 HEAD 处的代码编译不过。一并归档,让 HEAD 自洽。 纯归档,无行为改动。
52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:nontonki/pages/discover/widgets/cover_carousel.dart';
|
|
|
|
void main() {
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
testWidgets('the cube turns and keeps the title on the poster', (tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Scaffold(
|
|
body: CoverCarousel(
|
|
items: [
|
|
for (final title in ['The Signal', 'City Lights', 'Vengeance'])
|
|
CoverItem(
|
|
title: title,
|
|
subtitle: 'Mock',
|
|
image: '/files/poster.png',
|
|
onOpen: _noop,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
await tester.pump();
|
|
|
|
expect(find.text('The Signal'), findsOneWidget);
|
|
expect(find.text('Mock'), findsOneWidget);
|
|
|
|
final box = tester.getRect(find.byType(CoverCarousel));
|
|
final gesture = await tester.startGesture(Offset(box.right - 40, box.center.dy));
|
|
await gesture.moveBy(const Offset(-500, 0));
|
|
await tester.pump();
|
|
|
|
final turned = tester.widgetList<Transform>(find.byType(Transform)).any(
|
|
(transform) => (transform.transform.entry(0, 0) - 1).abs() > 0.15,
|
|
);
|
|
expect(turned, isTrue);
|
|
|
|
await gesture.moveBy(const Offset(-200, 0));
|
|
await gesture.up();
|
|
await tester.pump();
|
|
await tester.pump(const Duration(milliseconds: 450));
|
|
|
|
expect(find.text('City Lights'), findsOneWidget);
|
|
expect(tester.takeException(), isNull);
|
|
});
|
|
}
|
|
|
|
void _noop() {}
|