58 lines
1.7 KiB
Dart
58 lines
1.7 KiB
Dart
// 搜索历史本地存储单测:去重置顶 / 上限 10 条 / 删除 / 清空
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'package:video_app/core/storage/search_history_store.dart';
|
|
|
|
void main() {
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
Future<SearchHistoryStore> setup([Map<String, Object> initial = const {}]) async {
|
|
SharedPreferences.setMockInitialValues(initial);
|
|
final prefs = await SharedPreferences.getInstance();
|
|
SearchHistoryStore.initForTest(prefs);
|
|
return SearchHistoryStore.I;
|
|
}
|
|
|
|
test('add 追加并最新在前', () async {
|
|
final store = await setup();
|
|
await store.add('日落');
|
|
await store.add('美食');
|
|
expect(store.history, ['美食', '日落']);
|
|
});
|
|
|
|
test('重复关键词去重置顶', () async {
|
|
final store = await setup();
|
|
await store.add('日落');
|
|
await store.add('美食');
|
|
await store.add('日落');
|
|
expect(store.history, ['日落', '美食']);
|
|
});
|
|
|
|
test('超出 10 条截断最旧记录', () async {
|
|
final store = await setup();
|
|
for (var i = 1; i <= 12; i++) {
|
|
await store.add('词$i');
|
|
}
|
|
expect(store.history, hasLength(10));
|
|
expect(store.history.first, '词12');
|
|
expect(store.history.last, '词3');
|
|
});
|
|
|
|
test('空白关键词不入库', () async {
|
|
final store = await setup();
|
|
await store.add(' ');
|
|
expect(store.history, isEmpty);
|
|
});
|
|
|
|
test('remove 删除单条,clear 清空', () async {
|
|
final store = await setup();
|
|
await store.add('日落');
|
|
await store.add('美食');
|
|
await store.remove('日落');
|
|
expect(store.history, ['美食']);
|
|
await store.clear();
|
|
expect(store.history, isEmpty);
|
|
});
|
|
}
|