""" 存储模块测试脚本 """ import sys from pathlib import Path # 添加项目根目录到路径 project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from src.core.storage import Storage def test_storage(): """测试存储模块的所有功能""" print("=" * 60) print("存储模块测试") print("=" * 60) # 创建存储实例(使用临时测试目录) test_data_dir = Path(__file__).parent.parent / "data" / "test" storage = Storage(str(test_data_dir)) # 测试 1: 创建记录 print("\n[测试 1] 创建记录") print("-" * 60) record1 = storage.create( title="第一篇笔记", content="这是第一篇笔记的内容", category="工作", tags=["重要", "待办"] ) print(f"✓ 创建记录 1: {record1['id']} - {record1['title']}") record2 = storage.create( title="学习 Python", content="Python 是一门强大的编程语言", category="学习", tags=["编程", "Python"] ) print(f"✓ 创建记录 2: {record2['id']} - {record2['title']}") record3 = storage.create( title="购物清单", content="牛奶、面包、鸡蛋", category="生活", tags=["购物"] ) print(f"✓ 创建记录 3: {record3['id']} - {record3['title']}") # 测试 2: 查询单个记录 print("\n[测试 2] 查询单个记录") print("-" * 60) found_record = storage.get_by_id(record1["id"]) print(f"✓ 查询记录 ID {record1['id']}: {found_record['title']}") # 测试 3: 查询所有记录 print("\n[测试 3] 查询所有记录") print("-" * 60) all_records = storage.get_all() print(f"✓ 共有 {len(all_records)} 条记录:") for r in all_records: print(f" - {r['id']}: {r['title']} [{r['category']}]") # 测试 4: 按分类查询 print("\n[测试 4] 按分类查询") print("-" * 60) work_records = storage.get_by_category("工作") print(f"✓ '工作' 分类下的记录 ({len(work_records)} 条):") for r in work_records: print(f" - {r['title']}") # 测试 5: 获取所有分类 print("\n[测试 5] 获取所有分类") print("-" * 60) categories = storage.get_categories() print(f"✓ 所有分类 ({len(categories)} 个):") for cat in categories: print(f" - {cat}") # 测试 6: 搜索功能 print("\n[测试 6] 搜索功能") print("-" * 60) # 搜索标题 results = storage.search("Python") print(f"✓ 搜索 'Python' ({len(results)} 条结果):") for r in results: print(f" - {r['title']}") # 搜索内容 results = storage.search("牛奶") print(f"✓ 搜索 '牛奶' ({len(results)} 条结果):") for r in results: print(f" - {r['title']}") # 搜索标签 results = storage.search("重要") print(f"✓ 搜索 '重要' ({len(results)} 条结果):") for r in results: print(f" - {r['title']}") # 测试 7: 更新记录 print("\n[测试 7] 更新记录") print("-" * 60) updated_record = storage.update( record1["id"], title="第一篇笔记(已更新)", content="这是更新后的内容" ) print(f"✓ 更新记录: {updated_record['id']}") print(f" 新标题: {updated_record['title']}") print(f" 更新时间: {updated_record['updated_at']}") # 测试 8: 获取统计信息 print("\n[测试 8] 获取统计信息") print("-" * 60) stats = storage.get_stats() print(f"✓ 统计信息:") print(f" - 总记录数: {stats['total_records']}") print(f" - 总分类数: {stats['total_categories']}") print(f" - 各分类记录数:") for cat, count in stats['categories'].items(): print(f" · {cat}: {count}") # 测试 9: 删除记录 print("\n[测试 9] 删除记录") print("-" * 60) delete_success = storage.delete(record3["id"]) print(f"✓ 删除记录 {record3['id']}: {'成功' if delete_success else '失败'}") remaining_records = storage.get_all() print(f" 剩余记录数: {len(remaining_records)}") # 测试 10: 导入导出 print("\n[测试 10] 导入导出") print("-" * 60) exported_data = storage.export_data() print(f"✓ 导出数据: {len(exported_data)} 条记录") # 创建新的存储实例测试导入 test_import_dir = Path(__file__).parent.parent / "data" / "test_import" import_storage = Storage(str(test_import_dir)) imported_count = import_storage.import_data(exported_data, merge=False) print(f"✓ 导入数据: {imported_count} 条记录") imported_records = import_storage.get_all() print(f" 导入后记录数: {len(imported_records)}") print("\n" + "=" * 60) print("所有测试完成!") print("=" * 60) if __name__ == "__main__": test_storage()