功能:实现 Danding_Points 积分系统插件
- 新增积分系统插件,支持积分查询、签到、转账等核心功能 - 包含对应的测试脚本 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
71
test_danding_points.py
Normal file
71
test_danding_points.py
Normal file
@@ -0,0 +1,71 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user