import sys sys.path.append("..") from agent import agent from database import db, Platform import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def test_suggestion(category: str, budget: int, user_id: str = "test_user"): """Test product suggestion.""" logger.info(f"\n{'='*60}") logger.info(f"Testing: {category} under โ‚น{budget}") logger.info(f"{'='*60}\n") message = f"I need a {category} under โ‚น{budget}" result = agent.process_request( platform="ui", platform_user_id=user_id, user_message=message ) logger.info(f"Success: {result['success']}") logger.info(f"Response: {result['response_text']}") logger.info(f"Picks: {result.get('picks', [])}") assert result['success'], f"Request failed: {result.get('error')}" picks = result.get('picks', []) assert len(picks) <= 3, f"Expected max 3 picks, got {len(picks)}" assert "Top Picks:" in result['response_text'], "Response should contain 'Top Picks:'" logger.info("โœ… Test passed\n") return result def run_all_tests(): """Run all test scenarios.""" logger.info("\n" + "="*60) logger.info("๐Ÿงช Running Product Suggestion Tests") logger.info("="*60 + "\n") test_cases = [ ("mobile", 5000), ("books", 300), ("cycle", 7000), ("mobile", 8000), ("books", 200), ] results = [] for category, budget in test_cases: try: result = test_suggestion(category, budget) results.append({ "category": category, "budget": budget, "status": "PASSED", "picks": len(result.get('picks', [])) }) except Exception as e: logger.error(f"โŒ Test failed: {e}") results.append({ "category": category, "budget": budget, "status": "FAILED", "error": str(e) }) logger.info("\n" + "="*60) logger.info("๐Ÿ“Š Test Summary") logger.info("="*60) for i, result in enumerate(results, 1): status_icon = "โœ…" if result['status'] == "PASSED" else "โŒ" logger.info(f"{status_icon} Test {i}: {result['category']} @ โ‚น{result['budget']} - {result['status']}") if result['status'] == "PASSED": logger.info(f" Picks returned: {result['picks']}") passed = sum(1 for r in results if r['status'] == "PASSED") total = len(results) logger.info(f"\n๐ŸŽฏ Results: {passed}/{total} tests passed") logger.info("="*60 + "\n") if __name__ == "__main__": run_all_tests()