Files
ALwrity/backend/test/test_strategy_data_structure.py
2025-08-06 12:48:02 +05:30

117 lines
4.5 KiB
Python

"""
Test script to verify strategy data structure matches frontend expectations
"""
import asyncio
import json
from api.content_planning.services.strategy_service import StrategyService
async def test_strategy_data_structure():
"""Test the strategy data structure to ensure it matches frontend expectations."""
print("🧪 Testing Strategy Data Structure")
print("=" * 50)
# Initialize service
service = StrategyService()
# Get strategies
result = await service.get_strategies(user_id=1)
print("📊 Backend Response Structure:")
print(json.dumps(result, indent=2, default=str))
# Check if strategies array exists
if "strategies" in result and len(result["strategies"]) > 0:
strategy = result["strategies"][0]
print("\n✅ Frontend Expected Structure Check:")
print("-" * 40)
# Check for ai_recommendations
if "ai_recommendations" in strategy:
ai_rec = strategy["ai_recommendations"]
print(f"✅ ai_recommendations: Present")
# Check market_score
if "market_score" in ai_rec:
print(f"✅ market_score: {ai_rec['market_score']}")
else:
print("❌ market_score: Missing")
# Check strengths
if "strengths" in ai_rec:
print(f"✅ strengths: {len(ai_rec['strengths'])} items")
else:
print("❌ strengths: Missing")
# Check weaknesses
if "weaknesses" in ai_rec:
print(f"✅ weaknesses: {len(ai_rec['weaknesses'])} items")
else:
print("❌ weaknesses: Missing")
# Check competitive_advantages
if "competitive_advantages" in ai_rec:
print(f"✅ competitive_advantages: {len(ai_rec['competitive_advantages'])} items")
else:
print("❌ competitive_advantages: Missing")
# Check strategic_risks
if "strategic_risks" in ai_rec:
print(f"✅ strategic_risks: {len(ai_rec['strategic_risks'])} items")
else:
print("❌ strategic_risks: Missing")
else:
print("❌ ai_recommendations: Missing")
# Check for required strategy fields
required_fields = ["id", "name", "industry", "target_audience", "content_pillars"]
for field in required_fields:
if field in strategy:
print(f"{field}: Present")
else:
print(f"{field}: Missing")
print("\n🎯 Frontend Data Mapping Validation:")
print("-" * 40)
# Validate the specific structure expected by frontend
if "ai_recommendations" in strategy:
ai_rec = strategy["ai_recommendations"]
# Check market positioning structure
if "market_score" in ai_rec:
print(f"✅ Frontend can access: strategy.ai_recommendations.market_score")
# Check strengths structure
if "strengths" in ai_rec and isinstance(ai_rec["strengths"], list):
print(f"✅ Frontend can access: strategy.ai_recommendations.strengths")
# Check weaknesses structure
if "weaknesses" in ai_rec and isinstance(ai_rec["weaknesses"], list):
print(f"✅ Frontend can access: strategy.ai_recommendations.weaknesses")
# Check competitive advantages structure
if "competitive_advantages" in ai_rec and isinstance(ai_rec["competitive_advantages"], list):
print(f"✅ Frontend can access: strategy.ai_recommendations.competitive_advantages")
# Check strategic risks structure
if "strategic_risks" in ai_rec and isinstance(ai_rec["strategic_risks"], list):
print(f"✅ Frontend can access: strategy.ai_recommendations.strategic_risks")
print("\n🎉 Data Structure Validation Complete!")
print("=" * 50)
return True
else:
print("❌ No strategies found in response")
return False
if __name__ == "__main__":
success = asyncio.run(test_strategy_data_structure())
if success:
print("✅ All tests passed! Backend data structure matches frontend expectations.")
else:
print("❌ Tests failed! Backend data structure needs adjustment.")