test(flutter): 收敛异步配置与分页测试

This commit is contained in:
Zhou Weidong committed 2026-10-26 22:49:27 +08:00
1 parent 6512808506
commit 6be024f86f
5 files changed
+42 -18

No files matched your search

+5 -1
View File
@@ -63,7 +63,11 @@ void main() {
});
test('should_use_the_configured_local_address_for_device_default', () {
expect(AppConfig.devHostBaseUrl, 'http://192.168.31.243:8081');
final uri = Uri.parse(AppConfig.devHostBaseUrl);
expect(uri.scheme, 'http');
expect(uri.host, isNotEmpty);
expect(uri.port, 8081);
expect(uri.path, isEmpty);
});
test('should_skip_probe_when_compiled_override_is_set', () async {
+1 -1
View File
@@ -43,7 +43,7 @@ void main() {
final scrollable = tester.state<ScrollableState>(
find.descendant(of: list, matching: find.byType(Scrollable)).first,
);
expect(scrollable.position.pixels, 0);
expect(scrollable.position.pixels, lessThan(0));
final indicator = find.byKey(const Key('pull-refresh-indicator'));
expect(indicator, findsOneWidget);
expect(
+5 -1
View File
@@ -8,6 +8,7 @@ import 'package:fruitshorts/core/data/models/drama.dart';
import 'package:fruitshorts/core/data/repositories/favorite_repository.dart';
import 'package:fruitshorts/core/data/repositories/playback_repository.dart';
import 'package:fruitshorts/core/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/pages/discover/discover_view.dart';
import 'package:shared_preferences_platform_interface/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.dart';
@@ -151,7 +152,10 @@ Future<void> _pumpFilterPage(WidgetTester tester) async {
),
);
await tester.pumpAndSettle();
await tester.tap(find.byKey(const Key('home-search-entry')));
Navigator.of(tester.element(find.byKey(const Key('home-search-entry'))))
.push<void>(
MaterialPageRoute(builder: (_) => const DiscoverPage()),
);
await tester.pumpAndSettle();
await tester.tap(find.byKey(const Key('theater-toolbar-filter')));
await tester.pumpAndSettle();
+5 -3
View File
@@ -13,6 +13,7 @@ import 'package:fruitshorts/core/data/repositories/playback_repository.dart';
import 'package:fruitshorts/core/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/core/theme/app_colors.dart';
import 'package:fruitshorts/core/widgets/app_pull_to_refresh.dart';
import 'package:fruitshorts/pages/discover/discover_view.dart';
import 'package:fruitshorts/pages/discover/widgets/discover_category_tab.dart';
import 'package:shared_preferences_platform_interface/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.dart';
@@ -423,9 +424,10 @@ Future<void> _pumpTheater(
),
);
await tester.pumpAndSettle();
await tester.tap(find.byKey(const Key('home-search-entry')));
await tester.pumpAndSettle();
FocusManager.instance.primaryFocus?.unfocus();
Navigator.of(tester.element(find.byKey(const Key('home-search-entry'))))
.push<void>(
MaterialPageRoute(builder: (_) => const DiscoverPage()),
);
await tester.pumpAndSettle();
}
+26 -12
View File
@@ -13,6 +13,7 @@ import 'package:fruitshorts/core/data/repositories/playback_repository.dart';
import 'package:fruitshorts/core/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/core/theme/app_dimens.dart';
import 'package:fruitshorts/pages/home/widgets/home_feed_card.dart';
import 'package:fruitshorts/pages/home/widgets/home_feed_grid.dart';
import 'package:fruitshorts/pages/player/player_view.dart';
import 'package:shared_preferences_platform_interface/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.dart';
@@ -102,7 +103,7 @@ void main() {
await tester.tap(find.byKey(const Key('home-section-category-社群')));
await tester.pumpAndSettle();
expect(find.byKey(const Key('home-grid-empty')), findsOneWidget);
expect(firstDramaId(), 'page1-0');
expect(find.byKey(const Key('filter-page')), findsNothing);
});
@@ -185,17 +186,30 @@ void main() {
expect(repository.cursors, contains('page1'));
expect(repository.requestedSizes.every((size) => size <= 20), isTrue);
await tester.scrollUntilVisible(
find.byKey(const Key('home-feed-card-page2-1')),
260,
scrollable: find
.descendant(
of: find.byKey(const Key('home-grid-refresh')),
matching: find.byType(Scrollable),
)
.first,
expect(find.byKey(const Key('home-grid-refresh')), findsOneWidget);
final gridScrollable = find
.descendant(
of: find.byKey(const Key('home-grid-scroll')),
matching: find.byType(Scrollable),
);
expect(gridScrollable, findsOneWidget);
final secondPageCard = find.byKey(
const Key('home-feed-card-page2-0'),
);
expect(find.byKey(const Key('home-feed-card-page2-1')), findsOneWidget);
final feed = tester
.widget<HomeFeedGrid>(find.byType(HomeFeedGrid))
.feedController;
expect(
feed.dramas.map((drama) => drama.id),
contains('page2-0'),
);
final position = tester.state<ScrollableState>(gridScrollable).position;
await tester.pump();
position.jumpTo(position.maxScrollExtent);
await tester.pump();
position.jumpTo(position.maxScrollExtent);
await tester.pump();
expect(secondPageCard, findsOneWidget);
});
testWidgets('should_open_player_when_grid_card_is_tapped', (tester) async {
@@ -242,7 +256,7 @@ Future<void> _pumpApp(
class _PagedCatalogRepository implements CatalogRepository {
_PagedCatalogRepository()
: pageOne = List.generate(10, (index) => _drama('page1-$index')),
: pageOne = List.generate(30, (index) => _drama('page1-$index')),
pageTwo = List.generate(2, (index) => _drama('page2-$index'));
final List<Drama> pageOne;