// 搜索历史本地存储单测:去重置顶 / 上限 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 setup([Map 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); }); }