#!/usr/bin/env python3 """ Test script for Enhanced Strategy Data Processing Verifies that the enhanced strategy data processing is working correctly. """ import asyncio import sys import os from pathlib import Path # Add the backend directory to the Python path backend_dir = Path(__file__).parent sys.path.insert(0, str(backend_dir)) from services.content_planning_db import ContentPlanningDBService async def test_enhanced_strategy_processing(): """Test the enhanced strategy data processing functionality.""" print("๐Ÿงช Testing Enhanced Strategy Data Processing...") try: # Initialize the database service db_service = ContentPlanningDBService() # Test with a sample strategy ID strategy_id = 1 # You can change this to test with different strategies print(f"๐Ÿ“Š Testing strategy data retrieval for strategy ID: {strategy_id}") # Test the enhanced strategy data retrieval strategy_data = await db_service.get_strategy_data(strategy_id) if strategy_data: print("โœ… Strategy data retrieved successfully!") print(f"๐Ÿ“ˆ Strategy data contains {len(strategy_data)} fields") # Check for enhanced fields enhanced_fields = [ "strategy_analysis", "quality_indicators", "data_completeness", "strategic_alignment", "quality_gate_data", "prompt_chain_data" ] print("\n๐Ÿ” Checking for enhanced strategy fields:") for field in enhanced_fields: if field in strategy_data: print(f" โœ… {field}: Present") if isinstance(strategy_data[field], dict): print(f" Contains {len(strategy_data[field])} sub-fields") else: print(f" โŒ {field}: Missing") # Check strategy analysis if "strategy_analysis" in strategy_data: analysis = strategy_data["strategy_analysis"] print(f"\n๐Ÿ“Š Strategy Analysis:") print(f" - Completion Percentage: {analysis.get('completion_percentage', 0)}%") print(f" - Filled Fields: {analysis.get('filled_fields', 0)}/{analysis.get('total_fields', 30)}") print(f" - Data Quality Score: {analysis.get('data_quality_score', 0)}%") print(f" - Strategy Coherence: {analysis.get('strategy_coherence', {}).get('overall_coherence', 0)}%") # Check quality indicators if "quality_indicators" in strategy_data: quality = strategy_data["quality_indicators"] print(f"\n๐ŸŽฏ Quality Indicators:") print(f" - Data Completeness: {quality.get('data_completeness', 0)}%") print(f" - Strategic Alignment: {quality.get('strategic_alignment', 0)}%") print(f" - Market Relevance: {quality.get('market_relevance', 0)}%") print(f" - Audience Alignment: {quality.get('audience_alignment', 0)}%") print(f" - Content Strategy Coherence: {quality.get('content_strategy_coherence', 0)}%") print(f" - Overall Quality Score: {quality.get('overall_quality_score', 0)}%") # Check quality gate data if "quality_gate_data" in strategy_data: quality_gates = strategy_data["quality_gate_data"] print(f"\n๐Ÿšช Quality Gate Data:") for gate_name, gate_data in quality_gates.items(): if isinstance(gate_data, dict): print(f" - {gate_name}: {len(gate_data)} fields") else: print(f" - {gate_name}: {type(gate_data).__name__}") # Check prompt chain data if "prompt_chain_data" in strategy_data: prompt_chain = strategy_data["prompt_chain_data"] print(f"\n๐Ÿ”— Prompt Chain Data:") for step_name, step_data in prompt_chain.items(): if isinstance(step_data, dict): print(f" - {step_name}: {len(step_data)} sub-sections") else: print(f" - {step_name}: {type(step_data).__name__}") print(f"\nโœ… Enhanced Strategy Data Processing Test PASSED!") return True else: print("โŒ No strategy data retrieved") return False except Exception as e: print(f"โŒ Error during enhanced strategy data processing test: {str(e)}") import traceback traceback.print_exc() return False async def test_comprehensive_user_data(): """Test the comprehensive user data retrieval with enhanced strategy data.""" print("\n๐Ÿงช Testing Comprehensive User Data with Enhanced Strategy...") try: # Initialize the database service db_service = ContentPlanningDBService() # Test with a sample user ID and strategy ID user_id = 1 strategy_id = 1 print(f"๐Ÿ“Š Testing comprehensive user data for user {user_id} with strategy {strategy_id}") # Test the comprehensive user data retrieval user_data = await calendar_service._get_comprehensive_user_data(user_id, strategy_id) if user_data: print("โœ… Comprehensive user data retrieved successfully!") print(f"๐Ÿ“ˆ User data contains {len(user_data)} fields") # Check for enhanced strategy fields in user data enhanced_fields = [ "strategy_analysis", "quality_indicators", "data_completeness", "strategic_alignment", "quality_gate_data", "prompt_chain_data" ] print("\n๐Ÿ” Checking for enhanced strategy fields in user data:") for field in enhanced_fields: if field in user_data: print(f" โœ… {field}: Present") if isinstance(user_data[field], dict): print(f" Contains {len(user_data[field])} sub-fields") else: print(f" โŒ {field}: Missing") # Check strategy data quality if "strategy_data" in user_data: strategy_data = user_data["strategy_data"] print(f"\n๐Ÿ“Š Strategy Data Quality:") print(f" - Strategy ID: {strategy_data.get('strategy_id', 'N/A')}") print(f" - Strategy Name: {strategy_data.get('strategy_name', 'N/A')}") print(f" - Industry: {strategy_data.get('industry', 'N/A')}") print(f" - Content Pillars: {len(strategy_data.get('content_pillars', []))} pillars") print(f" - Target Audience: {len(strategy_data.get('target_audience', {}))} audience fields") print(f"\nโœ… Comprehensive User Data Test PASSED!") return True else: print("โŒ No comprehensive user data retrieved") return False except Exception as e: print(f"โŒ Error during comprehensive user data test: {str(e)}") import traceback traceback.print_exc() return False async def main(): """Run all tests for enhanced strategy data processing.""" print("๐Ÿš€ Starting Enhanced Strategy Data Processing Tests...") print("=" * 60) # Test 1: Enhanced Strategy Data Processing test1_passed = await test_enhanced_strategy_processing() # Test 2: Comprehensive User Data test2_passed = await test_comprehensive_user_data() print("\n" + "=" * 60) print("๐Ÿ“‹ Test Results Summary:") print(f" โœ… Enhanced Strategy Data Processing: {'PASSED' if test1_passed else 'FAILED'}") print(f" โœ… Comprehensive User Data: {'PASSED' if test2_passed else 'FAILED'}") if test1_passed and test2_passed: print("\n๐ŸŽ‰ All Enhanced Strategy Data Processing Tests PASSED!") print("โœ… The enhanced strategy data processing is working correctly.") print("โœ… Ready for 12-step prompt chaining and quality gates integration.") return True else: print("\nโŒ Some tests failed. Please check the implementation.") return False if __name__ == "__main__": # Run the tests success = asyncio.run(main()) sys.exit(0 if success else 1)