Skip to main content
Glama
test_basic.py3.48 kB
"""Basic unit tests for CSV Editor.""" import pytest import pandas as pd from src.csv_editor.models import get_session_manager from src.csv_editor.utils.validators import ( validate_column_name, sanitize_filename, validate_url ) class TestValidators: """Test validation utilities.""" def test_validate_column_name(self): """Test column name validation.""" # Valid names assert validate_column_name("age")[0] == True assert validate_column_name("first_name")[0] == True assert validate_column_name("_id")[0] == True # Invalid names assert validate_column_name("123name")[0] == False assert validate_column_name("name-with-dash")[0] == False assert validate_column_name("")[0] == False def test_sanitize_filename(self): """Test filename sanitization.""" assert sanitize_filename("test.csv") == "test.csv" assert sanitize_filename("test<>file.csv") == "test__file.csv" assert sanitize_filename("../../../etc/passwd") == "passwd" def test_validate_url(self): """Test URL validation.""" # Valid URLs assert validate_url("https://example.com/data.csv")[0] == True assert validate_url("http://localhost:8000/file.csv")[0] == True # Invalid URLs assert validate_url("ftp://example.com/data.csv")[0] == False assert validate_url("not-a-url")[0] == False class TestSessionManager: """Test session management.""" def test_create_session(self): """Test session creation.""" manager = get_session_manager() session_id = manager.create_session() assert session_id is not None assert manager.get_session(session_id) is not None # Cleanup manager.remove_session(session_id) def test_session_cleanup(self): """Test session removal.""" manager = get_session_manager() session_id = manager.create_session() # Session should exist assert manager.get_session(session_id) is not None # Remove session manager.remove_session(session_id) # Session should not exist assert manager.get_session(session_id) is None @pytest.mark.asyncio class TestDataOperations: """Test basic data operations.""" async def test_load_csv_from_content(self): """Test loading CSV from string content.""" from src.csv_editor.tools.io_operations import load_csv_from_content csv_content = """a,b,c 1,2,3 4,5,6""" result = await load_csv_from_content( content=csv_content, delimiter="," ) assert result["success"] == True assert result["rows_affected"] == 2 assert len(result["columns_affected"]) == 3 # Cleanup manager = get_session_manager() manager.remove_session(result["session_id"]) async def test_filter_rows(self, test_session): """Test filtering rows.""" from src.csv_editor.tools.transformations import filter_rows result = await filter_rows( session_id=test_session, conditions=[{"column": "price", "operator": ">", "value": 50}], mode="and" ) assert result["success"] == True assert result["rows_after"] < result["rows_before"]

Latest Blog Posts

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/santoshray02/csv-editor'

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