import 'package:flutter_test/flutter_test.dart'; import 'package:social_app/app/services/session_scope_manager.dart'; import 'package:social_app/data/cache/cache_scope.dart'; import 'package:social_app/data/cache/cache_store.dart'; class _RecordingHybridCacheStore extends HybridCacheStore { _RecordingHybridCacheStore() : super(memory: MemoryCacheStore(), persistent: PersistentCacheStore()); final List clearedPrefixes = []; @override Future clearByPrefix(String prefix) async { clearedPrefixes.add(prefix); } } void main() { late _RecordingHybridCacheStore cacheStore; late SessionScopeManager manager; setUp(() { cacheStore = _RecordingHybridCacheStore(); manager = SessionScopeManager(cacheStore: cacheStore); CacheScope.resetProvider(); }); tearDown(() { CacheScope.resetProvider(); }); test('activate configures stable user scope token', () async { await manager.activate('u-1'); expect(CacheScope.token(), 'user:u-1'); expect(cacheStore.clearedPrefixes, isEmpty); }); test('activate clears previous user cache when switching user', () async { await manager.activate('u-1'); await manager.activate('u-2'); expect(cacheStore.clearedPrefixes, ['cache:user:u-1:']); expect(CacheScope.token(), 'user:u-2'); }); test('activate does not clear cache when user is unchanged', () async { await manager.activate('u-1'); await manager.activate('u-1'); expect(cacheStore.clearedPrefixes, isEmpty); expect(CacheScope.token(), 'user:u-1'); }); test('clearActiveUserScope clears current user cache', () async { await manager.activate('u-1'); await manager.clearActiveUserScope(); expect(cacheStore.clearedPrefixes, ['cache:user:u-1:']); expect(() => CacheScope.token(), throwsStateError); }); }