#!/usr/bin/env python3 """ Test script to verify that the Tabulator library is properly loaded and the table displays correctly. This script will test the specialists view to ensure the table formatting is fixed. """ import sys import os import json # Add the project root to the Python path project_root = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, project_root) def test_tabulator_library_inclusion(): """Test that Tabulator library is included in the templates.""" # Check head.html for Tabulator CSS head_file = os.path.join(project_root, 'eveai_app/templates/head.html') with open(head_file, 'r') as f: head_content = f.read() if 'tabulator' in head_content.lower(): print("✓ Tabulator CSS found in head.html") else: print("✗ Tabulator CSS not found in head.html") return False # Check scripts.html for Tabulator JavaScript scripts_file = os.path.join(project_root, 'eveai_app/templates/scripts.html') with open(scripts_file, 'r') as f: scripts_content = f.read() if 'tabulator' in scripts_content.lower(): print("✓ Tabulator JavaScript found in scripts.html") else: print("✗ Tabulator JavaScript not found in scripts.html") return False return True def test_list_view_template(): """Test that the list view template has proper column configuration.""" list_view_file = os.path.join(project_root, 'eveai_app/templates/eveai_list_view.html') with open(list_view_file, 'r') as f: template_content = f.read() # Check for key Tabulator configuration elements required_elements = [ '_buildColumns', 'new Tabulator', 'layout: "fitColumns"', 'columns:', 'data:' ] for element in required_elements: if element in template_content: print(f"✓ Found required element: {element}") else: print(f"✗ Missing required element: {element}") return False return True def test_specialists_template(): """Test that the specialists template properly initializes the list view.""" specialists_file = os.path.join(project_root, 'eveai_app/templates/interaction/specialists.html') with open(specialists_file, 'r') as f: template_content = f.read() # Check for proper initialization required_elements = [ 'EveAI.ListView.initialize', 'specialists-list-view', 'data: {{ specialists_data | tojson }}', 'columns: {{ columns | tojson }}', 'selectable: true' ] for element in required_elements: if element in template_content: print(f"✓ Found required element: {element}") else: print(f"✗ Missing required element: {element}") return False return True def test_column_configuration(): """Test that the column configuration in the view is correct.""" try: # Import the view function from eveai_app.views.interaction_views import specialists # Test the column configuration structure sample_columns = [ {'title': 'ID', 'field': 'id', 'type': 'number', 'width': 80}, {'title': 'Name', 'field': 'name', 'type': 'text', 'dynamicValues': True}, {'title': 'Type', 'field': 'type', 'type': 'text', 'dynamicValues': True}, {'title': 'Type Version', 'field': 'type_version', 'type': 'text'}, {'title': 'Active', 'field': 'active', 'type': 'boolean', 'formatter': 'tickCross'} ] # Validate column structure for i, column in enumerate(sample_columns): if 'title' in column and 'field' in column: print(f"✓ Column {i+1} ({column['title']}) has required title and field") else: print(f"✗ Column {i+1} missing title or field") return False print("✓ Column configuration structure is correct") return True except Exception as e: print(f"✗ Error testing column configuration: {e}") return False def main(): """Run all tests.""" print("Testing Tabulator table formatting fix...") print("=" * 50) # Test Tabulator library inclusion print("\n1. Testing Tabulator library inclusion...") tabulator_test_passed = test_tabulator_library_inclusion() # Test list view template print("\n2. Testing list view template...") list_view_test_passed = test_list_view_template() # Test specialists template print("\n3. Testing specialists template...") specialists_test_passed = test_specialists_template() # Test column configuration print("\n4. Testing column configuration...") column_test_passed = test_column_configuration() # Summary print("\n" + "=" * 50) if all([tabulator_test_passed, list_view_test_passed, specialists_test_passed, column_test_passed]): print("✓ All tests passed! The table formatting should now work correctly.") print("\nThe table should now display with proper columns:") print("- ID column (80px width)") print("- Name column (with dynamic filtering)") print("- Type column (with dynamic filtering)") print("- Type Version column") print("- Active column (with tick/cross formatter)") return 0 else: print("✗ Some tests failed. Please check the implementation.") return 1 if __name__ == "__main__": sys.exit(main())