TutorX-MCP / tests /test_mcp_server.py
Meet Patel
Added external tool integration,also with test files and documentation
411f252
"""
Tests for the TutorX MCP server
"""
import sys
import os
import unittest
import json
from datetime import datetime
from unittest.mock import patch, MagicMock
# Add parent directory to path to import modules
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from main import assess_skill, generate_quiz, get_concept_graph
class TestMCPServer(unittest.TestCase):
"""Test cases for the TutorX MCP server"""
def setUp(self):
"""Set up test fixtures"""
self.student_id = "test_student_123"
self.concept_id = "math_algebra_basics"
def test_assess_skill(self):
"""Test assess_skill tool"""
result = assess_skill(self.student_id, self.concept_id)
# Verify the structure of the result
self.assertIsInstance(result, dict)
self.assertEqual(result["student_id"], self.student_id)
self.assertEqual(result["concept_id"], self.concept_id)
self.assertIsInstance(result["skill_level"], float)
self.assertIsInstance(result["confidence"], float)
self.assertIsInstance(result["recommendations"], list)
self.assertIn("timestamp", result)
def test_generate_quiz(self):
"""Test generate_quiz tool"""
concept_ids = [self.concept_id]
difficulty = 2
result = generate_quiz(concept_ids, difficulty)
# Verify the structure of the result
self.assertIsInstance(result, dict)
self.assertIn("quiz_id", result)
self.assertEqual(result["concept_ids"], concept_ids)
self.assertEqual(result["difficulty"], difficulty)
self.assertIsInstance(result["questions"], list)
self.assertGreater(len(result["questions"]), 0)
# Check question structure
question = result["questions"][0]
self.assertIn("id", question)
self.assertIn("text", question)
self.assertIn("type", question)
self.assertIn("answer", question)
self.assertIn("solution_steps", question)
def test_get_concept_graph(self):
"""Test get_concept_graph resource"""
result = get_concept_graph()
# Verify the structure of the result
self.assertIsInstance(result, dict)
self.assertIn("nodes", result)
self.assertIn("edges", result)
self.assertIsInstance(result["nodes"], list)
self.assertIsInstance(result["edges"], list)
self.assertGreater(len(result["nodes"]), 0)
self.assertGreater(len(result["edges"]), 0)
# Check node structure
node = result["nodes"][0]
self.assertIn("id", node)
self.assertIn("name", node)
self.assertIn("difficulty", node)
# Check edge structure
edge = result["edges"][0]
self.assertIn("from", edge)
self.assertIn("to", edge)
self.assertIn("weight", edge)
if __name__ == "__main__":
unittest.main()