Skip to main content
Glama
test_default_autosave.py4.21 kB
#!/usr/bin/env python3 """Test that auto-save is enabled by default and works correctly.""" import asyncio import tempfile import os import pandas as pd from pathlib import Path # Setup path for imports import sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from src.csv_editor.models.csv_session import CSVSession from src.csv_editor.models.data_models import OperationType async def test_default_autosave(): """Test that auto-save is enabled by default.""" print("=" * 60) print("Testing Default Auto-Save Configuration") print("=" * 60) # Create a temporary CSV file temp_dir = tempfile.mkdtemp() test_file = os.path.join(temp_dir, "test_data.csv") # Create initial data initial_data = pd.DataFrame({ 'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie'], 'value': [100, 200, 300] }) # Save initial data initial_data.to_csv(test_file, index=False) print(f"\n✓ Created test file: {test_file}") print(f"Initial content:\n{initial_data}") # Create session WITHOUT explicitly configuring auto-save session = CSVSession() # Using defaults # Check default auto-save configuration print("\n" + "-" * 40) print("Default Auto-Save Configuration:") print("-" * 40) config = session.auto_save_config print(f"Enabled: {config.enabled}") print(f"Mode: {config.mode.value}") print(f"Strategy: {config.strategy.value}") # Verify defaults assert config.enabled == True, "Auto-save should be enabled by default" assert config.mode.value == "after_operation", "Mode should be 'after_operation' by default" assert config.strategy.value == "overwrite", "Strategy should be 'overwrite' by default" print("\n✅ All defaults are correct!") # Load the CSV file df = pd.read_csv(test_file) session.load_data(df, file_path=test_file) print("\n" + "-" * 40) print("Testing Auto-Save on Operations:") print("-" * 40) # Perform an operation print("\n1. Doubling all values...") session.df['value'] = session.df['value'] * 2 session.record_operation(OperationType.TRANSFORM, {"operation": "double_values"}) # Trigger auto-save (should happen automatically after operation) result = await session.trigger_auto_save_if_needed() print(f" Auto-save triggered: {result is not None}") # Read the file to verify it was updated saved_df = pd.read_csv(test_file) print(f" Values in file after operation: {saved_df['value'].tolist()}") assert saved_df['value'].tolist() == [200, 400, 600], "File should be auto-saved with new values" print(" ✓ File was automatically updated!") # Perform another operation print("\n2. Adding a new column...") session.df['status'] = 'active' session.record_operation(OperationType.ADD_COLUMN, {"column": "status"}) # Trigger auto-save again result = await session.trigger_auto_save_if_needed() print(f" Auto-save triggered: {result is not None}") # Verify the file has the new column saved_df = pd.read_csv(test_file) print(f" Columns in file: {saved_df.columns.tolist()}") assert 'status' in saved_df.columns, "New column should be in the saved file" print(" ✓ New column was automatically saved!") # Show final file content print("\n" + "-" * 40) print("Final File Content:") print("-" * 40) print(saved_df) print("\n" + "=" * 60) print("✅ Default Auto-Save Test Passed!") print("=" * 60) print("\nSummary:") print("• Auto-save is ENABLED by default") print("• Mode is 'after_operation' by default") print("• Strategy is 'overwrite' by default") print("• Original file is automatically updated after each operation") print("• No manual configuration needed!") return test_file async def main(): """Run the test.""" test_file = await test_default_autosave() print(f"\nTest file location: {test_file}") print("(File has been automatically saved with all changes)") if __name__ == "__main__": asyncio.run(main())

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