MRobot/test_category_dropdown.py
2025-11-25 20:45:10 +08:00

103 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""
测试查询页面分类下拉框动态更新功能
"""
import shutil
from pathlib import Path
from app.tools.finance_manager import FinanceManager, Transaction
# 清除旧数据
data_root = Path("assets/Finance_Data")
if data_root.exists():
shutil.rmtree(data_root)
print("=" * 60)
print("测试查询页面分类下拉框动态更新")
print("=" * 60)
# 初始化财务管理器
fm = FinanceManager()
admin_acc = fm.get_all_accounts()[0]
print("\n[初始状态] 检查初始分类列表")
categories = fm.get_categories(admin_acc.id)
print(f" 初始分类数: {len(categories)}")
print(f" 初始分类: {categories}")
assert len(categories) == 0, "初始应该没有分类"
print(" ✓ 通过")
print("\n[测试1] 创建第一个分类")
success = fm.add_category(admin_acc.id, "工资")
print(f" 添加 '工资': {'成功' if success else '失败'}")
assert success, "应该成功添加分类"
categories = fm.get_categories(admin_acc.id)
print(f" 当前分类: {categories}")
assert "工资" in categories
print(" ✓ 通过")
print("\n[测试2] 创建第二个分类")
success = fm.add_category(admin_acc.id, "房租")
print(f" 添加 '房租': {'成功' if success else '失败'}")
assert success
categories = fm.get_categories(admin_acc.id)
print(f" 当前分类: {categories}")
assert len(categories) == 2
assert "工资" in categories and "房租" in categories
print(" ✓ 通过")
print("\n[测试3] 创建第三个分类")
success = fm.add_category(admin_acc.id, "食品")
print(f" 添加 '食品': {'成功' if success else '失败'}")
assert success
categories = fm.get_categories(admin_acc.id)
print(f" 当前分类: {categories}")
assert len(categories) == 3
print(" ✓ 通过")
print("\n[测试4] 验证分类持久化")
# 重新加载账户
fm2 = FinanceManager()
admin_acc2 = None
for acc in fm2.get_all_accounts():
if acc.name == "admin":
admin_acc2 = acc
break
assert admin_acc2 is not None
categories2 = fm2.get_categories(admin_acc2.id)
print(f" 重新加载后的分类: {categories2}")
assert len(categories2) == 3
assert set(categories2) == {"工资", "房租", "食品"}
print(" ✓ 通过")
print("\n[测试5] 创建交易并按分类查询")
# 创建测试交易
trans_data = [
("2025-01-01", 5000, "工作", "工资", "1月工资"),
("2025-01-05", -1500, "房东", "房租", "房租"),
("2025-01-10", -200, "超市", "食品", "食材"),
]
for date, amount, trader, category, notes in trans_data:
trans = Transaction(date=date, amount=amount, trader=trader, category=category, notes=notes)
fm2.add_transaction(admin_acc2.id, trans)
print(f" 创建了 {len(trans_data)} 条交易")
# 按各分类查询
for cat in categories2:
results = fm2.query_transactions(admin_acc2.id, category=cat)
print(f" 查询 '{cat}' 分类: {len(results)}")
assert len(results) == 1, f"应该有1条 {cat} 分类的交易"
print(" ✓ 通过")
print("\n" + "=" * 60)
print("所有动态分类测试都通过了!✓")
print("=" * 60)
print("\n说明:")
print("1. 新建的分类可以立即在下拉框中选择")
print("2. 分类数据会被正确保存和加载")
print("3. 创建的交易可以按分类进行查询")