67 lines
2.2 KiB
Dart
67 lines
2.2 KiB
Dart
// Author: fruit.com.cn
|
|
// 职责:首页顶部精选与底部推荐使用不同文案,覆盖支持的三种语言。
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:fruitshorts/core/widgets/app_root_tab.dart';
|
|
import 'package:fruitshorts/l10n/app_localizations.dart';
|
|
import 'package:fruitshorts/pages/recommend/recommend_types.dart';
|
|
import 'package:fruitshorts/pages/recommend/widgets/recommend_top_nav.dart';
|
|
|
|
const _labels = [
|
|
('zh', '精选', '推荐', '剧单', '全部短剧'),
|
|
('en', 'Featured', 'Recommend', 'Playlists', 'All Dramas'),
|
|
('id', 'Unggulan', 'Rekomendasi', 'Daftar Putar', 'Semua'),
|
|
];
|
|
|
|
void main() {
|
|
for (final (language, featured, recommend, playlists, all) in _labels) {
|
|
testWidgets(
|
|
'should_distinguish_featured_from_recommend_when_locale_is_$language',
|
|
(tester) async {
|
|
await tester.pumpWidget(_host(language));
|
|
await tester.pumpAndSettle();
|
|
final top = find.byKey(const Key('recommend-top-nav'));
|
|
final bottom = find.byKey(const Key('tab-recommend'));
|
|
expect(
|
|
find.descendant(of: top, matching: find.text(featured)),
|
|
findsOneWidget,
|
|
);
|
|
expect(
|
|
find.descendant(of: top, matching: find.text(recommend)),
|
|
findsNothing,
|
|
);
|
|
expect(
|
|
find.descendant(of: bottom, matching: find.text(recommend)),
|
|
findsOneWidget,
|
|
);
|
|
expect(
|
|
find.descendant(of: top, matching: find.text(playlists)),
|
|
findsOneWidget,
|
|
);
|
|
expect(
|
|
find.descendant(of: top, matching: find.text(all)),
|
|
findsOneWidget,
|
|
);
|
|
expect(tester.takeException(), isNull);
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
Widget _host(String language) => MaterialApp(
|
|
locale: Locale(language),
|
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
supportedLocales: AppLocalizations.supportedLocales,
|
|
home: Scaffold(
|
|
body: RecommendTopNav(
|
|
selected: RecommendInnerTab.feed,
|
|
onSelected: (_) {},
|
|
onSearch: () {},
|
|
),
|
|
bottomNavigationBar: AppRootBottomNav(
|
|
selected: AppRootTab.home,
|
|
onSelected: (_) {},
|
|
),
|
|
),
|
|
);
|