feat(ranking): 榜单改为统一行布局
This commit is contained in:
1 parent
7f65fe4d48
commit
8c1662475a
16 files changed
+927
-390
No files matched your search
@@ -0,0 +1,86 @@
|
||||
// Author: fruit.com.cn
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:fruitshorts/core/data/models/category_ranking.dart';
|
||||
import 'package:fruitshorts/core/data/models/content_category.dart';
|
||||
import 'package:fruitshorts/core/data/models/drama.dart';
|
||||
import 'package:fruitshorts/core/data/models/home_feed.dart';
|
||||
import 'package:fruitshorts/core/data/repositories/category_repository.dart';
|
||||
import 'package:fruitshorts/core/data/services/category_controller.dart';
|
||||
import 'package:fruitshorts/core/theme/app_colors.dart';
|
||||
import 'package:fruitshorts/core/theme/app_theme.dart';
|
||||
import 'package:fruitshorts/l10n/app_localizations.dart';
|
||||
import 'package:fruitshorts/pages/home/widgets/home_ranking_dramas.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('should_render_uniform_rows_in_server_rank_order', (
|
||||
tester,
|
||||
) async {
|
||||
final controller = CategoryController(_EmptyCategoryRepository());
|
||||
controller.rankingSlotOf('ranking').ranking = CategoryRanking(
|
||||
id: 'ranking',
|
||||
code: 'RECOMMEND_RANKING',
|
||||
revision: '4',
|
||||
entries: [
|
||||
for (var rank = 1; rank <= 4; rank++)
|
||||
CategoryRankingEntry(rank: rank, drama: _drama('$rank')),
|
||||
],
|
||||
);
|
||||
Drama? opened;
|
||||
|
||||
await tester.pumpWidget(
|
||||
ChangeNotifierProvider.value(
|
||||
value: controller,
|
||||
child: MaterialApp(
|
||||
theme: AppTheme.dark(),
|
||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
home: Scaffold(
|
||||
body: HomeRankingDramas(
|
||||
categoryId: 'ranking',
|
||||
onOpenDrama: (drama) => opened = drama,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
for (var rank = 1; rank <= 4; rank++) {
|
||||
expect(find.byKey(Key('ranking-top-$rank')), findsOneWidget);
|
||||
expect(find.byKey(Key('ranking-row-${rank - 1}')), findsOneWidget);
|
||||
}
|
||||
expect(find.byKey(const Key('home-ranking-top-1')), findsNothing);
|
||||
final surface = tester.widget<DecoratedBox>(
|
||||
find.byKey(const Key('home-ranking-surface')),
|
||||
);
|
||||
final gradient =
|
||||
(surface.decoration as BoxDecoration).gradient! as LinearGradient;
|
||||
expect(gradient.colors.first, AppColors.followingGlow);
|
||||
expect(
|
||||
tester.getSize(find.byKey(const Key('ranking-row-cover-1'))),
|
||||
const Size(96, 128),
|
||||
);
|
||||
|
||||
await tester.tap(find.byKey(const Key('ranking-top-2')));
|
||||
expect(opened?.id, '2');
|
||||
});
|
||||
}
|
||||
|
||||
Drama _drama(String id) => Drama(
|
||||
id: id,
|
||||
title: 'Rank $id',
|
||||
synopsis: '',
|
||||
posterUrl: '',
|
||||
viewCount: int.parse(id) * 10,
|
||||
);
|
||||
|
||||
class _EmptyCategoryRepository implements CategoryRepository {
|
||||
@override
|
||||
Future<List<ContentCategory>> fetchCategories() async => const [];
|
||||
|
||||
@override
|
||||
Future<HomeFeed> fetchDiscoverFeed() async => const HomeFeed();
|
||||
}
|
||||
Reference in new issue
Block a user