test(flutter): 收敛异步配置与分页测试
This commit is contained in:
1 parent
6512808506
commit
6be024f86f
5 files changed
+40
-16
No files matched your search
@@ -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 {
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
|
||||||
scrollable: find
|
|
||||||
.descendant(
|
.descendant(
|
||||||
of: find.byKey(const Key('home-grid-refresh')),
|
of: find.byKey(const Key('home-grid-scroll')),
|
||||||
matching: find.byType(Scrollable),
|
matching: find.byType(Scrollable),
|
||||||
)
|
|
||||||
.first,
|
|
||||||
);
|
);
|
||||||
expect(find.byKey(const Key('home-feed-card-page2-1')), findsOneWidget);
|
expect(gridScrollable, findsOneWidget);
|
||||||
|
final secondPageCard = find.byKey(
|
||||||
|
const Key('home-feed-card-page2-0'),
|
||||||
|
);
|
||||||
|
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;
|
||||||
|
|||||||
Reference in new issue
Block a user