import 'package:drift/native.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:provider/provider.dart'; import 'package:melo/library/database.dart'; import 'package:melo/library/playlist_service.dart'; import 'package:melo/shared/favorite_button.dart'; void main() { testWidgets('shows outlined heart when not favorite, fills on tap', (tester) async { final db = MeloDb(NativeDatabase.memory()); final service = PlaylistService(db); await db.into(db.songs).insert(SongsCompanion.insert( id: 'song-1', path: '/a.mp3', title: 'A', dateAddedMs: 0, updatedAtMs: 0, )); await tester.pumpWidget( MultiProvider( providers: [ Provider.value(value: db), ChangeNotifierProvider.value(value: service), ], child: MaterialApp( home: Scaffold(body: FavoriteButton(songId: 'song-1')), ), ), ); await tester.pumpAndSettle(); expect(find.byIcon(Icons.favorite_border), findsOneWidget); await tester.tap(find.byIcon(Icons.favorite_border)); await tester.pumpAndSettle(); expect(find.byIcon(Icons.favorite), findsOneWidget); await db.close(); }); }