Skip to main content
Glama

WaniKani MCP Server

by jackedney
test_database.py2.92 kB
from sqlmodel import Session, SQLModel, create_engine from wanikani_mcp.database import get_session def test_get_session(): sessions = list(get_session()) assert len(sessions) == 1 def test_create_tables(): engine = create_engine("sqlite:///:memory:") # Should not raise any exceptions SQLModel.metadata.create_all(engine) # Verify tables exist by checking metadata table_names = [table.name for table in SQLModel.metadata.tables.values()] expected_tables = [ "user", "subject", "assignment", "review", "reviewstatistic", "srsstage", "levelprogression", "studymaterial", "voiceactor", "synclog", ] for table in expected_tables: assert table in table_names def test_database_indexes(): """Test that important indexes are created""" engine = create_engine("sqlite:///:memory:") SQLModel.metadata.create_all(engine) # Check that key indexes exist from sqlalchemy import inspect inspector = inspect(engine) # Check user table indexes user_indexes = inspector.get_indexes("user") index_names = [idx["name"] for idx in user_indexes] assert "ix_user_wanikani_api_key" in index_names assert "ix_user_mcp_api_key" in index_names assert "ix_user_username" in index_names # Check subject table indexes subject_indexes = inspector.get_indexes("subject") subject_index_names = [idx["name"] for idx in subject_indexes] assert "ix_subject_level" in subject_index_names assert "ix_subject_object_type" in subject_index_names def test_database_foreign_keys(): """Test that foreign key relationships work""" from wanikani_mcp.models import Assignment, Subject, User engine = create_engine("sqlite:///:memory:") SQLModel.metadata.create_all(engine) with Session(engine) as session: # Create user and subject user = User( wanikani_api_key="test-key", mcp_api_key="test-mcp", username="test", level=1, ) subject = Subject( id=1, object_type="kanji", level=1, slug="test", meanings=[], document_url="http://test.com", ) session.add(user) session.add(subject) session.commit() # Create assignment with foreign keys assignment = Assignment( id=1, user_id=user.id, subject_id=subject.id, subject_type="kanji", srs_stage=1, ) session.add(assignment) session.commit() # Test the relationship works retrieved_assignment = session.get(Assignment, 1) assert retrieved_assignment is not None assert retrieved_assignment.user.username == "test" assert retrieved_assignment.subject.slug == "test"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jackedney/wanikani-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server