feat: 重构会话管理与提醒通知系统

This commit is contained in:
qzl
2026-03-31 18:26:36 +08:00
parent a8c262e9c7
commit 9a231dae9e
31 changed files with 650 additions and 223 deletions
+26
View File
@@ -1,5 +1,6 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:social_app/data/cache/cache_policy.dart';
import 'package:social_app/data/cache/cache_scope.dart';
import 'package:social_app/data/cache/cached_repository.dart';
import 'package:social_app/data/cache/cache_store.dart';
@@ -29,6 +30,14 @@ class _IntCachedRepository extends CachedRepository<int> {
void main() {
group('CachedRepository', () {
setUp(() {
CacheScope.configureProvider(() => 'user:test');
});
tearDown(() {
CacheScope.resetProvider();
});
test('reads from cache after first load', () async {
final repo = _IntCachedRepository(
store: HybridCacheStore(
@@ -59,5 +68,22 @@ void main() {
expect(refreshed, 2);
expect(repo.loadCount, 2);
});
test('falls back to remote load when scope is unavailable', () async {
CacheScope.resetProvider();
final repo = _IntCachedRepository(
store: HybridCacheStore(
memory: MemoryCacheStore(),
persistent: PersistentCacheStore(),
),
);
final first = await repo.fetch();
final second = await repo.fetch();
expect(first, 1);
expect(second, 2);
expect(repo.loadCount, 2);
});
});
}
+16
View File
@@ -1,5 +1,6 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:social_app/data/cache/cache_scope.dart';
import 'package:social_app/data/cache/cache_store.dart';
void main() {
@@ -24,5 +25,20 @@ void main() {
final secondRead = await hybrid.read<String>('k');
expect(secondRead, 'v');
});
test('cache invalidator no-ops without configured scope', () async {
CacheScope.resetProvider();
final invalidator = CacheInvalidator(
store: HybridCacheStore(
memory: MemoryCacheStore(),
persistent: PersistentCacheStore(),
),
);
expect(
() => invalidator.invalidate('calendar:day:2026-03-31'),
returnsNormally,
);
});
});
}