fix(test): corregge i fallimenti emersi alla prima esecuzione

- update_service_test: il fake HttpClientResponse tipizza lo stream
  come Stream<List<int>> (utf8.encode ritorna Uint8List)
- guide/info_bottom_sheet test: i titoli delle _DocCard sono resi
  con toUpperCase(), i finder ora cercano il testo maiuscolo
- converter_page_test e app_test: loadDb()/load() dei provider
  spostati nel setUp — chiamarli nel body di testWidgets (zona
  FakeAsync) bloccava la suite fino al timeout di 10 minuti

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-12 20:38:57 +02:00
parent d94bd5fdf7
commit 57f522e3a2
5 changed files with 31 additions and 15 deletions
+18 -4
View File
@@ -8,15 +8,19 @@ import 'package:biteplan/features/converter/providers/converter_provider.dart';
import 'package:biteplan/features/meal_planner/providers/meal_planner_provider.dart';
import 'package:biteplan/features/shopping_list/providers/shopping_list_provider.dart';
late MealPlannerProvider _meals;
late ConverterProvider _converter;
late ShoppingListProvider _shopping;
Future<void> _pumpApp(WidgetTester tester) async {
await tester.binding.setSurfaceSize(const Size(800, 1600));
addTearDown(() => tester.binding.setSurfaceSize(null));
await tester.pumpWidget(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => MealPlannerProvider()..load()),
ChangeNotifierProvider(create: (_) => ConverterProvider()..loadDb()),
ChangeNotifierProvider(create: (_) => ShoppingListProvider()..load()),
ChangeNotifierProvider.value(value: _meals),
ChangeNotifierProvider.value(value: _converter),
ChangeNotifierProvider.value(value: _shopping),
],
child: const BitePlanApp(),
),
@@ -28,8 +32,18 @@ Finder _appBarTitle(String text) => find.descendant(
of: find.byType(AppBar), matching: find.text(text));
void main() {
setUp(() {
TestWidgetsFlutterBinding.ensureInitialized();
// I provider sono creati e caricati nel setUp (fuori dalla zona FakeAsync
// di testWidgets): il caricamento async dentro il body può bloccare la suite.
setUp(() async {
SharedPreferences.setMockInitialValues({});
_meals = MealPlannerProvider();
_converter = ConverterProvider();
_shopping = ShoppingListProvider();
await _meals.load();
await _converter.loadDb();
await _shopping.load();
});
group('BitePlanApp', () {