mirror of
https://github.com/goldenfishs/MRobot.git
synced 2026-02-04 18:00:19 +08:00
103 lines
3.2 KiB
Python
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. 创建的交易可以按分类进行查询")
|