opencompletion.com/tests
Claude c4cd185adc
Add integration tests for activity.py and app.py
New integration test files:
- test_activity_integration.py: 3 passing tests
  - Activity state metadata persistence
  - Metadata update and remove operations
  - Processing script execution with metadata

- test_app_integration.py: 4 passing tests
  - Group consecutive roles utility function
  - Room user workflow (add/remove users)
  - Message persistence and retrieval
  - Activity state workflow

Coverage improvements:
- Overall: 70% → 72% (+2%)
- Tests passing: 174 → 181 (+7)
- models.py: 100% coverage (from 55%)
- activity.py: 22% coverage (from 20%)
- New integration tests: 7 passing

Total test suite: 181 passing, 72% coverage
2025-11-08 14:18:56 +00:00
..
fixtures Add comprehensive testing framework and YAML validator 2025-08-10 19:35:52 -04:00
functional Remove redundant streaming protocol test file 2025-08-11 16:05:55 -04:00
integration Add integration tests for activity.py and app.py 2025-11-08 14:18:56 +00:00
unit Add comprehensive unit tests for models.py and activity.py 2025-11-08 14:11:43 +00:00
conftest.py Improve test infrastructure and fix test failures 2025-11-08 14:04:09 +00:00
README.md Significantly improve test coverage with comprehensive integration tests 2025-08-10 20:52:56 -04:00

OpenCompletion Testing Framework

Comprehensive testing suite for OpenCompletion with unit tests, integration tests, functional tests, and YAML validation.

Quick Start

# Setup testing environment
make setup

# Run all tests
make test

# Run specific test types
make test-unit
make test-integration 
make test-functional
make test-validator
make test-yaml-loading
make test-activity-flows
make test-battleship
make test-guarded-ai
make test-multiple-files

# Validate YAML files
make validate-yaml

Test Structure

tests/
├── unit/                    # Unit tests for individual functions
│   ├── test_app.py         # Tests for app.py core functions
│   └── test_activity_yaml_validator.py  # Tests for YAML validator
├── integration/            # Integration tests for complete flows
│   └── test_activity_processing.py      # Activity processing integration
├── functional/             # End-to-end functional tests
│   └── test_battleship_game_flow.py    # Complete battleship game scenarios
└── fixtures/               # Test data and invalid samples
    └── test_invalid.yaml   # Intentionally invalid YAML for testing

Test Categories

Unit Tests (tests/unit/)

test_app.py - Tests core app.py functions:

  • Utility functions (client management, S3 operations)
  • Activity processing functions (script execution, metadata operations)
  • Response categorization and feedback generation
  • Translation and language handling
  • Navigation between activity steps

test_activity_yaml_validator.py - Tests YAML validator:

  • YAML syntax validation
  • Schema compliance checking
  • Metadata operations validation
  • Python code syntax checking
  • Terminal step validation
  • Logic flow validation

Integration Tests (tests/integration/)

test_activity_processing.py - Tests complete activity workflows:

  • End-to-end activity processing
  • Script execution with metadata updates
  • Pre-script and post-script integration
  • Navigation between sections and steps
  • Error handling and recovery

Functional Tests (tests/functional/)

test_battleship_game_flow.py - Tests complete battleship game scenarios:

  • Game setup and board generation
  • Shot processing and hit detection
  • Ship sinking logic
  • AI behavior (random, hunter, super hunter modes)
  • Win condition detection
  • Edge case handling

Features Tested

YAML Validation

  • Syntax validation
  • Schema compliance
  • Required fields checking
  • Metadata operations (metadata_add, metadata_remove, metadata_feedback_filter, etc.)
  • Terminal step validation (no questions in final steps)
  • Python code syntax checking
  • Logic flow validation
  • Transition validation

Core Application Features

  • Activity loading (local files and S3)
  • Script execution with metadata manipulation
  • Response categorization using AI
  • Feedback generation
  • Multi-language support and translation
  • Step navigation and flow control
  • Error handling and recovery

Battleship Game Logic

  • Board generation and ship placement
  • Shot processing and validation
  • Hit/miss detection
  • Ship sinking logic
  • AI opponent behavior (multiple difficulty levels)
  • Win/lose conditions
  • Game state consistency validation

Running Tests

All Tests

make test

Runs all unit, integration, and functional tests, plus YAML validation.

Specific Test Categories

make test-unit          # Unit tests only
make test-integration   # Integration tests only  
make test-functional    # Functional tests only
make test-validator     # YAML validator tests only
make test-yaml-loading  # YAML loading/parsing tests
make test-activity-flows # Activity flow tests
make test-battleship    # Battleship game tests
make test-guarded-ai    # Guarded AI functionality tests
make test-multiple-files # Integration tests across all activity files

YAML Validation

make validate-yaml      # Validate all research/*.yaml files

With Coverage

make test-cov          # Run tests with coverage report

Quick Development Testing

make quick             # Fast test run for development

Test Configuration

Virtual Environment

Tests run in an isolated virtual environment with all necessary dependencies:

  • pytest, pytest-cov, pytest-mock, pytest-flask
  • pyyaml, requests, flask, flask-socketio
  • gevent, eventlet, boto3, openai

Mocking Strategy

  • External APIs (OpenAI, S3) are mocked to avoid API calls during testing
  • Database operations are mocked to avoid needing a real database
  • Socket.IO events are mocked for testing real-time features

Test Data

  • Valid YAML: Real battleship configuration files
  • Invalid YAML: Intentionally broken files in tests/fixtures/
  • Mock Game States: Simulated battleship game states for testing
  • Sample Scripts: Python scripts for testing execution

Continuous Integration

The testing framework is designed for CI/CD integration:

# Example GitHub Actions workflow
- name: Setup and Test
  run: |
    make setup
    make test
    make validate-yaml

Development Workflow

  1. Before committing: Run make test to ensure all tests pass
  2. Adding new features: Write tests in the appropriate category
  3. YAML changes: Run make validate-yaml to check syntax
  4. Code formatting: Run make format to format and lint code

Test Coverage

Current test coverage includes:

  • YAML Validator: 17 test cases covering all validation scenarios
  • Core App Functions: Comprehensive testing of utility and processing functions
  • Activity Processing: End-to-end workflow testing
  • Battleship Logic: Complete game scenario testing

Troubleshooting

Common Issues

Virtual environment not found:

make clean-all  # Remove old venv
make setup      # Create new venv

Import errors:

# Ensure you're in the project root directory
cd /path/to/opencompletion
make test

YAML validation errors:

# Check specific file
venv/bin/python activity_yaml_validator.py research/problematic-file.yaml

Adding New Tests

Unit Test Example

def test_new_function(self):
    """Test description"""
    result = app.new_function("input")
    self.assertEqual(result, "expected")

Integration Test Example

def test_new_workflow(self):
    """Test complete workflow"""
    with patch('app.external_dependency'):
        result = complete_workflow()
        self.assertTrue(result.success)

Functional Test Example

def test_new_game_scenario(self):
    """Test complete game scenario"""
    game_state = setup_game()
    result = play_complete_game(game_state)
    self.assertEqual(result.winner, "user")

Contributing

  1. Write tests for all new features
  2. Ensure tests pass: make test
  3. Follow existing patterns and naming conventions
  4. Update this README if adding new test categories