You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.7 KiB
121 lines
3.7 KiB
#!/usr/bin/env python3
|
|
"""
|
|
Test script to verify the logging system is working correctly.
|
|
"""
|
|
|
|
from app import create_app, db
|
|
from services import (
|
|
log_script_start, log_script_completion, log_batch_created,
|
|
log_payment_plan_run, log_payment_intent_followup, log_activity
|
|
)
|
|
from models import Logs
|
|
import time
|
|
|
|
def test_logging_functions():
|
|
"""Test all logging functions."""
|
|
print("Testing logging system...")
|
|
|
|
# Test basic log_activity function
|
|
log_id = log_activity(
|
|
user_id=1, # System user
|
|
action="TEST_LOGGING",
|
|
entity_type="Test",
|
|
entity_id=999,
|
|
details="Testing the logging system functionality"
|
|
)
|
|
print(f"✓ Basic logging test - Log ID: {log_id}")
|
|
|
|
# Test script start logging
|
|
start_log_id = log_script_start("test_logging.py", "test", "sandbox")
|
|
print(f"✓ Script start logging - Log ID: {start_log_id}")
|
|
|
|
# Test batch creation logging
|
|
batch_log_id = log_batch_created(123, "Direct Debit", 45)
|
|
print(f"✓ Batch creation logging - Log ID: {batch_log_id}")
|
|
|
|
# Test payment plan run logging
|
|
payplan_log_id = log_payment_plan_run(
|
|
active_plans=25,
|
|
due_plans=8,
|
|
processed_count=7,
|
|
failed_count=1,
|
|
total_amount=1247.50
|
|
)
|
|
print(f"✓ Payment plan run logging - Log ID: {payplan_log_id}")
|
|
|
|
# Test payment intent follow-up logging
|
|
intent_log_id = log_payment_intent_followup(
|
|
pending_count=15,
|
|
succeeded_count=12,
|
|
failed_count=2,
|
|
still_pending=1
|
|
)
|
|
print(f"✓ Payment intent follow-up logging - Log ID: {intent_log_id}")
|
|
|
|
# Test script completion logging
|
|
completion_log_id = log_script_completion(
|
|
script_name="test_logging.py",
|
|
mode="test",
|
|
success_count=5,
|
|
failed_count=1,
|
|
total_amount=1247.50,
|
|
batch_ids=[123, 124],
|
|
duration_seconds=2.5,
|
|
errors=["Test error message"]
|
|
)
|
|
print(f"✓ Script completion logging - Log ID: {completion_log_id}")
|
|
|
|
return True
|
|
|
|
def verify_logs_in_database():
|
|
"""Verify that logs were actually written to the database."""
|
|
print("\nVerifying logs in database...")
|
|
|
|
# Query recent test logs
|
|
recent_logs = db.session.query(Logs).filter(
|
|
(Logs.Action.like('TEST_%')) |
|
|
(Logs.Entity_Type == 'Test')
|
|
).order_by(Logs.Added.desc()).limit(10).all()
|
|
|
|
print(f"Found {len(recent_logs)} test log entries:")
|
|
for log in recent_logs:
|
|
print(f" - ID: {log.id}, Action: {log.Action}, Entity: {log.Entity_Type}, Details: {log.Log_Entry[:50]}...")
|
|
|
|
return len(recent_logs) > 0
|
|
|
|
if __name__ == "__main__":
|
|
app = create_app()
|
|
|
|
with app.app_context():
|
|
print("=" * 60)
|
|
print("PLUTUS LOGGING SYSTEM TEST")
|
|
print("=" * 60)
|
|
|
|
start_time = time.time()
|
|
|
|
# Test logging functions
|
|
test_success = test_logging_functions()
|
|
|
|
# Verify logs were written to database
|
|
db_success = verify_logs_in_database()
|
|
|
|
end_time = time.time()
|
|
duration = end_time - start_time
|
|
|
|
print(f"\nTest completed in {duration:.2f} seconds")
|
|
|
|
if test_success and db_success:
|
|
print("✅ All logging tests passed!")
|
|
|
|
# Log this test completion to demonstrate the system
|
|
log_activity(
|
|
user_id=1,
|
|
action="TEST_COMPLETED",
|
|
entity_type="Test",
|
|
details=f"Logging system test completed successfully in {duration:.2f}s"
|
|
)
|
|
|
|
else:
|
|
print("❌ Some logging tests failed!")
|
|
|
|
print("=" * 60)
|