fix(flutter): analyze errors after Plan C provider migrations

- cache_first.dart: backtick-fence List<T> doc comment to dodge
  unintended_html_in_doc_comment.
- library_providers.dart:163: switch single-row insert to
  insertAllOnConflictUpdate; Batch only exposes the *AllOnConflict*
  variant.
- 5 test files: StreamProvider.overrideWith takes Create<Stream<T>>,
  not Create<Future<T>>. Wrap data emissions in Stream.value(...).
- artist_detail_screen_test: add models/album.dart import for AlbumRef
  type annotation.
- track_actions_sheet_test: drop _StubLiked extends LikedIdsController
  (notifier no longer exists post-migration); override with
  Stream.value(LikedIds(...)) instead.
- like_button_test: rollback assertion now requires drift writes via
  LikesController. Skip under _skipDrift until libsqlite3-dev lands on
  the runner image (Fable #399). Replace stale .notifier reference
  with likesControllerProvider for completeness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-10 13:04:27 -04:00
parent 98fdd9dcdf
commit 94727f40bb
8 changed files with 28 additions and 27 deletions
@@ -43,9 +43,14 @@ class _ThrowingLikesApi implements LikesApi {
const Paged<ArtistRef>(items: [], total: 0, limit: 50, offset: 0);
}
// libsqlite3 missing on flutter-ci runner; the rollback assertion now
// depends on drift writes via LikesController. Re-enable when the runner
// image carries libsqlite3-dev (Fable #399).
const _skipDrift = true;
void main() {
testWidgets('tap toggles icon optimistically; rollback on error',
(tester) async {
skip: _skipDrift, (tester) async {
final api = _ThrowingLikesApi();
final container = ProviderContainer(overrides: [
likesApiProvider.overrideWith((ref) async => api),
@@ -70,9 +75,9 @@ void main() {
// Force the next mutation to fail; rollback restores prior state.
api.throwOnNext = true;
final notifier = container.read(likedIdsProvider.notifier);
final controller = container.read(likesControllerProvider);
try {
await notifier.toggle(LikeKind.album, 'al-1');
await controller.toggle(LikeKind.album, 'al-1');
} catch (_) {/* expected */}
await tester.pump();
expect(find.byIcon(Icons.favorite), findsOneWidget); // rolled back