import 'dart:typed_data'; import 'package:flutter_test/flutter_test.dart'; import 'package:tane/data/variety_repository.dart'; import 'package:tane/db/database.dart'; import '../support/test_support.dart'; void main() { late AppDatabase db; late VarietyRepository repo; setUp(() { db = newTestDatabase(); repo = newTestRepository(db); }); tearDown(() => db.close()); Uint8List photo(int seed) => Uint8List.fromList([seed, seed, seed]); test('a captured draft is hidden from the list but shown in the tray', () async { final id = await repo.addDraftVariety(photo(1)); // Not in the main inventory… expect(await repo.watchInventory().first, isEmpty); // …but in the "to catalogue" tray, with its photo and no name yet. final drafts = await repo.watchDrafts().first; expect(drafts, hasLength(1)); expect(drafts.single.id, id); expect(drafts.single.isDraft, isTrue); expect(drafts.single.label, ''); expect(drafts.single.photo, isNotNull); }); test('naming a draft promotes it into the list and out of the tray', () async { final id = await repo.addDraftVariety(photo(2)); await repo.nameDraft(id, 'Grandma tomato'); expect(await repo.watchDrafts().first, isEmpty); final list = await repo.watchInventory().first; expect(list.single.id, id); expect(list.single.label, 'Grandma tomato'); expect(list.single.isDraft, isFalse); // The captured photo survived the promotion. expect(list.single.photo, isNotNull); }); test('the tray is ordered newest-capture first', () async { final first = await repo.addDraftVariety(photo(1)); final second = await repo.addDraftVariety(photo(2)); final drafts = await repo.watchDrafts().first; expect(drafts.map((d) => d.id).toList(), [second, first]); }); }