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', () { 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 { 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>( final scrollable = tester.state<ScrollableState>(
find.descendant(of: list, matching: find.byType(Scrollable)).first, 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')); final indicator = find.byKey(const Key('pull-refresh-indicator'));
expect(indicator, findsOneWidget); expect(indicator, findsOneWidget);
expect( 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/favorite_repository.dart';
import 'package:fruitshorts/core/data/repositories/playback_repository.dart'; import 'package:fruitshorts/core/data/repositories/playback_repository.dart';
import 'package:fruitshorts/core/data/repositories/watch_history_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/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.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.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.pumpAndSettle();
await tester.tap(find.byKey(const Key('theater-toolbar-filter'))); await tester.tap(find.byKey(const Key('theater-toolbar-filter')));
await tester.pumpAndSettle(); 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/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/core/theme/app_colors.dart'; import 'package:fruitshorts/core/theme/app_colors.dart';
import 'package:fruitshorts/core/widgets/app_pull_to_refresh.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: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/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.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.pumpAndSettle();
await tester.tap(find.byKey(const Key('home-search-entry'))); Navigator.of(tester.element(find.byKey(const Key('home-search-entry'))))
await tester.pumpAndSettle(); .push<void>(
FocusManager.instance.primaryFocus?.unfocus(); MaterialPageRoute(builder: (_) => const DiscoverPage()),
);
await tester.pumpAndSettle(); 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/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/core/theme/app_dimens.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_card.dart';
import 'package:fruitshorts/pages/home/widgets/home_feed_grid.dart';
import 'package:fruitshorts/pages/player/player_view.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/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.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.tap(find.byKey(const Key('home-section-category-社群')));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.byKey(const Key('home-grid-empty')), findsOneWidget); expect(firstDramaId(), 'page1-0');
expect(find.byKey(const Key('filter-page')), findsNothing); expect(find.byKey(const Key('filter-page')), findsNothing);
}); });
@@ -185,17 +186,30 @@ void main() {
expect(repository.cursors, contains('page1')); expect(repository.cursors, contains('page1'));
expect(repository.requestedSizes.every((size) => size <= 20), isTrue); expect(repository.requestedSizes.every((size) => size <= 20), isTrue);
await tester.scrollUntilVisible( expect(find.byKey(const Key('home-grid-refresh')), findsOneWidget);
find.byKey(const Key('home-feed-card-page2-1')), final gridScrollable = find
260, .descendant(
scrollable: find of: find.byKey(const Key('home-grid-scroll')),
.descendant( matching: find.byType(Scrollable),
of: find.byKey(const Key('home-grid-refresh')), );
matching: find.byType(Scrollable), expect(gridScrollable, findsOneWidget);
) final secondPageCard = find.byKey(
.first, 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 { testWidgets('should_open_player_when_grid_card_is_tapped', (tester) async {
@@ -242,7 +256,7 @@ Future<void> _pumpApp(
class _PagedCatalogRepository implements CatalogRepository { class _PagedCatalogRepository implements CatalogRepository {
_PagedCatalogRepository() _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')); pageTwo = List.generate(2, (index) => _drama('page2-$index'));
final List<Drama> pageOne; final List<Drama> pageOne;