import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:relationship_saver/features/local/local_repository.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { setUp(() { SharedPreferences.setMockInitialValues({}); }); test('seeds local data on first load', () async { final ProviderContainer container = ProviderContainer(); addTearDown(container.dispose); final state = await container.read(localRepositoryProvider.future); expect(state.people, isNotEmpty); expect(state.moments, isNotEmpty); expect(state.tasks, isNotEmpty); }); test('adds and removes person with persistence state update', () async { final ProviderContainer container = ProviderContainer(); addTearDown(container.dispose); final initial = await container.read(localRepositoryProvider.future); final int initialCount = initial.people.length; await container .read(localRepositoryProvider.notifier) .addPerson( name: 'Test Person', relationship: 'Friend', notes: 'test', tags: ['alpha'], ); final afterAdd = await container.read(localRepositoryProvider.future); expect(afterAdd.people.length, initialCount + 1); final String insertedId = afterAdd.people.first.id; await container .read(localRepositoryProvider.notifier) .deletePerson(insertedId); final afterDelete = await container.read(localRepositoryProvider.future); expect(afterDelete.people.length, initialCount); }); test('adds and removes capture moments', () async { final ProviderContainer container = ProviderContainer(); addTearDown(container.dispose); final state = await container.read(localRepositoryProvider.future); final String personId = state.people.first.id; final int beforeCount = state.moments.length; await container .read(localRepositoryProvider.notifier) .addMoment(personId: personId, summary: 'This is a new capture moment'); final withMoment = await container.read(localRepositoryProvider.future); expect(withMoment.moments.length, beforeCount + 1); final String momentId = withMoment.moments.first.id; await container .read(localRepositoryProvider.notifier) .deleteMoment(momentId); final afterDelete = await container.read(localRepositoryProvider.future); expect(afterDelete.moments.length, beforeCount); }); }