- 新增积分系统插件,支持积分查询、签到、转账等核心功能 - 包含对应的测试脚本 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Manual test script for danding_points plugin."""
|
|
|
|
import asyncio
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add project root to path
|
|
sys.path.insert(0, str(Path(__file__).parent.parent.parent))
|
|
|
|
from danding_bot.plugins.danding_points import points_api
|
|
|
|
|
|
async def test_basic_operations():
|
|
"""Test basic points operations."""
|
|
print("Testing basic operations...")
|
|
|
|
# Test 1: Get balance for non-existent user
|
|
balance = await points_api.get_balance("test_user_1")
|
|
assert balance == 0, f"Expected 0, got {balance}"
|
|
print("✓ Non-existent user returns 0 balance")
|
|
|
|
# Test 2: Add points (auto-create user)
|
|
success, new_balance = await points_api.add_points(
|
|
"test_user_1", 100, "test_source", "test reason"
|
|
)
|
|
assert success and new_balance == 100, f"Add failed: {success}, {new_balance}"
|
|
print("✓ Add points works and auto-creates user")
|
|
|
|
# Test 3: Get balance after add
|
|
balance = await points_api.get_balance("test_user_1")
|
|
assert balance == 100, f"Expected 100, got {balance}"
|
|
print("✓ Balance updated correctly")
|
|
|
|
# Test 4: Spend points
|
|
success, new_balance = await points_api.spend_points(
|
|
"test_user_1", 30, "test_source", "spend reason"
|
|
)
|
|
assert success and new_balance == 70, f"Spend failed: {success}, {new_balance}"
|
|
print("✓ Spend points works")
|
|
|
|
# Test 5: Spend more than balance (should fail)
|
|
success, new_balance = await points_api.spend_points(
|
|
"test_user_1", 100, "test_source", "should fail"
|
|
)
|
|
assert not success, "Should fail when spending more than balance"
|
|
print("✓ Spend fails when insufficient balance")
|
|
|
|
# Test 6: Set points
|
|
success, new_balance = await points_api.set_points(
|
|
"test_user_1", 50, "test_source", "set reason"
|
|
)
|
|
assert success and new_balance == 50, f"Set failed: {success}, {new_balance}"
|
|
print("✓ Set points works")
|
|
|
|
# Test 7: Get transactions
|
|
transactions = await points_api.get_transactions("test_user_1", limit=10)
|
|
assert len(transactions) > 0, "Should have transactions"
|
|
print(f"✓ Get transactions works ({len(transactions)} transactions)")
|
|
|
|
# Test 8: Get ranking
|
|
ranking = await points_api.get_ranking(limit=10)
|
|
assert len(ranking) > 0, "Should have ranking entries"
|
|
assert "rank" in ranking[0], "Ranking should have rank field"
|
|
print(f"✓ Get ranking works ({len(ranking)} entries)")
|
|
|
|
print("\n✅ All tests passed!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_basic_operations())
|