import 'package:flutter_test/flutter_test.dart'; import 'package:jinzhi_flutter_app/common/storage/preferences_storage.dart'; import 'package:jinzhi_flutter_app/features/assets/data/mock_asset_repository.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { setUp(() => SharedPreferences.setMockInitialValues({})); test('account deletion stays empty after repository recreation', () async { final preferences = PreferencesStorage( await SharedPreferences.getInstance(), ); final repository = MockAssetRepository(preferences); final accountScope = MockAssetRepository.accountScope(userId: 'user-1'); final initial = repository.loadHoldings(accountScope); expect(initial, isNotEmpty); expect( repository.loadHoldings(MockAssetRepository.guestAccountScope), isNotEmpty, ); await repository.saveHoldings(accountScope, initial); await repository.deleteAccountHoldings(accountScope); final recreated = MockAssetRepository(preferences); expect(recreated.loadHoldings(accountScope), isEmpty); expect( recreated.loadHoldings(MockAssetRepository.guestAccountScope), isEmpty, ); }); test('holdings are isolated by account and deletion is scoped', () async { final preferences = PreferencesStorage( await SharedPreferences.getInstance(), ); final repository = MockAssetRepository(preferences); final first = MockAssetRepository.accountScope(userId: 'user-1'); final second = MockAssetRepository.accountScope(userId: 'user-2'); final firstHoldings = repository.loadHoldings(first); final secondHoldings = repository.loadHoldings(second); await repository.saveHoldings(first, firstHoldings.take(1).toList()); await repository.saveHoldings(second, secondHoldings.take(2).toList()); await repository.deleteAccountHoldings(first); expect(repository.loadHoldings(first), isEmpty); expect(repository.loadHoldings(second), hasLength(2)); }); }