Files
jinzhi/test/features/assets/mock_asset_repository_test.dart
T

51 lines
2.0 KiB
Dart

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));
});
}