shopping lists
This commit is contained in:
84
test_shopping_lists.py
Executable file
84
test_shopping_lists.py
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for automated shopping list generation
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.dirname(__file__))
|
||||
|
||||
from src.config import Config
|
||||
from src.database import DatabaseManager
|
||||
from src.notification import NotificationManager
|
||||
from src.shopping_list import AutoShoppingListGenerator
|
||||
|
||||
def test_shopping_lists():
|
||||
"""Test the automated shopping list generation."""
|
||||
print("🛒 Testing Automated Shopping List Generation")
|
||||
print("=" * 50)
|
||||
|
||||
# Initialize components
|
||||
config = Config()
|
||||
db_manager = DatabaseManager(config.database_path)
|
||||
notification_manager = NotificationManager(config)
|
||||
shopping_generator = AutoShoppingListGenerator(db_manager, notification_manager)
|
||||
|
||||
# Generate shopping lists
|
||||
print("\n📊 Generating shopping lists...")
|
||||
shopping_lists = shopping_generator.generate_shopping_lists()
|
||||
summary = shopping_generator.get_summary_stats()
|
||||
|
||||
# Display summary
|
||||
print(f"\n📈 Summary:")
|
||||
print(f" • Total products: {summary['total_products']}")
|
||||
print(f" • Total cost: £{summary['total_cost']:.2f}")
|
||||
print(f" • Total savings: £{summary['total_savings']:.2f}")
|
||||
print(f" • Stores involved: {summary['store_count']}")
|
||||
|
||||
if summary['most_items_store']:
|
||||
print(f" • Best store: {summary['most_items_store']} ({summary['most_items_count']} items)")
|
||||
|
||||
# Display shopping lists
|
||||
print(f"\n🛍️ Shopping Lists by Store:")
|
||||
print("-" * 30)
|
||||
|
||||
for store_list in shopping_lists:
|
||||
print(f"\n🏪 {store_list.store_display_name}")
|
||||
print(f" Items: {store_list.item_count}")
|
||||
print(f" Total: £{store_list.total_cost:.2f}")
|
||||
if store_list.total_savings > 0:
|
||||
print(f" Savings: £{store_list.total_savings:.2f}")
|
||||
|
||||
print(f" Products:")
|
||||
for i, item in enumerate(store_list.items[:5], 1):
|
||||
savings_text = f" (save £{item.savings_vs_most_expensive:.2f})" if item.savings_vs_most_expensive > 0 else ""
|
||||
print(f" {i}. {item.product_name}: £{item.current_price:.2f}{savings_text}")
|
||||
|
||||
if len(store_list.items) > 5:
|
||||
print(f" ... and {len(store_list.items) - 5} more items")
|
||||
|
||||
if not shopping_lists:
|
||||
print(" No shopping lists available.")
|
||||
print(" Add some products and run a price scrape first.")
|
||||
|
||||
print(f"\n✅ Shopping list generation complete!")
|
||||
|
||||
# Test email sending (if configured)
|
||||
email_config = config.notification_config.get('email', {})
|
||||
if email_config.get('enabled') and email_config.get('recipient_email'):
|
||||
print(f"\n📧 Testing email notification...")
|
||||
try:
|
||||
success = shopping_generator.send_daily_shopping_list()
|
||||
if success:
|
||||
print(f" ✅ Email sent successfully!")
|
||||
else:
|
||||
print(f" ❌ Failed to send email (check configuration)")
|
||||
except Exception as e:
|
||||
print(f" ❌ Error sending email: {str(e)}")
|
||||
else:
|
||||
print(f"\n📧 Email notifications not configured")
|
||||
|
||||
return shopping_lists
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_shopping_lists()
|
||||
Reference in New Issue
Block a user