# Testing Framework Improvement Plan
**Date:** 2025-04-14
**Status:** In Progress
**Last Updated:** 2025-04-14 16:24:59

### Implementation Progress

#### HVAC_Role_Manager Implementation - ✓ COMPLETED
- Implemented comprehensive role management system
- Added support for role inheritance and conflict detection
- Integrated with TEC capabilities
- Created extensive test suite
- Documentation in progress


1. Test Environment Setup - ✓ COMPLETED
   - Implemented HVAC_Test_Environment class with all specified functionality
   - Created HVAC_Base_Test_Case class
   - Added comprehensive unit tests
   - Successfully deployed and tested on staging
   - All test environment components verified and working

2. Account Management - ✓ COMPLETED
   - Implemented HVAC_Test_User_Factory with:
     * User creation with specific roles
     * Multiple role support
     * Persona management system
     * Account cleanup integration
   - Created comprehensive test suite
   - All test cases passing

## Overview
This document outlines the comprehensive plan for improving the test framework to address issues with unit testing, staging deployment, test accounts, and E2E testing.

## Current Issues
1. Unit testing custom plugin
2. Uploading plugin to staging environment
3. Creating and testing test accounts
4. Playwright E2E testing challenges

## Implementation Plan

```mermaid
graph TD
    A[Test Account Framework Implementation] --> B[1. Test Environment Setup]
    B --> C[2. Account Management]
    C --> D[3. Test Data Handling]
    D --> E[4. Integration Testing]

    subgraph "1. Test Environment Setup"
        B1[Setup Database Transactions]
        B2[Verify TEC CE Activation]
        B3[Configure Test Bootstrap]
        B4[Implement Environment Reset]
    end

    subgraph "2. Account Management"
        C1[Create TestUserFactory]
        C2[Implement Role Manager]
        C3[Setup User Personas]
        C4[Add Account Cleanup]
    end

    subgraph "3. Test Data Handling"
        D1[Transaction Wrapper]
        D2[Test Data Generator]
        D3[Cleanup Mechanisms]
        D4[Data Verification]
    end

    subgraph "4. Integration Testing"
        E1[Role Permission Tests]
        E2[TEC CE Integration]
        E3[Multi-Role Scenarios]
        E4[Event Management]
    end
```

## Detailed Components

### 1. Test Environment Setup
```php
class HVAC_Test_Environment {
    public function setUp() {
        // Start transaction
        $this->start_transaction();
        
        // Ensure TEC CE is active
        $this->activate_required_plugins();
        
        // Reset environment
        $this->reset_environment();
    }

    public function tearDown() {
        // Rollback transaction
        $this->rollback_transaction();
        
        // Clean up test accounts
        $this->cleanup_test_accounts();
    }
}
```

### 2. Account Management
```php
class HVAC_Test_User_Factory {
    // Create test users with specific roles
    public function create_test_user($persona) {
        $user_data = $this->get_persona_data($persona);
        return $this->create_user($user_data);
    }

    // Support multiple roles
    public function assign_multiple_roles($user_id, $roles) {
        foreach ($roles as $role) {
            $this->assign_role($user_id, $role);
        }
    }
}
```

### 3. Test Data Handling
```php
class HVAC_Test_Data_Manager {
    // Transaction management
    public function start_test() {
        $this->start_transaction();
        $this->create_test_data();
    }

    public function end_test() {
        $this->verify_data_integrity();
        $this->rollback_transaction();
    }
}
```

### 4. Test Case Implementation
```php
class HVAC_Trainer_Role_Test extends WP_UnitTestCase {
    public function setUp() {
        parent::setUp();
        $this->test_env = new HVAC_Test_Environment();
        $this->user_factory = new HVAC_Test_User_Factory();
        $this->data_manager = new HVAC_Test_Data_Manager();
    }

    public function test_trainer_role_capabilities() {
        // Create test trainer
        $trainer = $this->user_factory->create_test_user('canadaTrainer1');
        
        // Verify capabilities
        $this->assertTrue(user_can($trainer, 'publish_tribe_events'));
        // ... more capability checks
    }
}
```

## Key Features

1. **Environment Reset on Each Test**
   - Fresh database transaction
   - Test account recreation
   - TEC CE activation verification
   - State reset

2. **Multiple Role Support**
   - Multiple role testing
   - Role conflict handling
   - Permission inheritance
   - Role removal verification

3. **Transaction Management**
   - Database transaction isolation
   - Automatic rollback
   - Data integrity checks
   - Clean test state

4. **TEC CE Integration**
   - Plugin activation verification
   - Event capability testing
   - Permission integration
   - Event management validation

## Implementation Timeline

1. **Create Base Classes** (Day 1) - ✓ COMPLETED
     - HVAC_Test_Environment - ✓ Implemented
     - HVAC_Test_User_Factory - ✓ Implemented
     - HVAC_Test_Data_Manager - Next
     - Base test case class - ✓ Implemented

2. **Test Infrastructure** (Day 2)
   - Transaction handling
   - User persona system
   - Role management
   - Cleanup mechanisms

3. **Test Cases** (Day 3)
   - Role creation tests
   - Capability verification
   - Multi-role scenarios
   - TEC CE integration tests

4. **Documentation & Review** (Day 4)
   - Framework documentation
   - Usage examples
   - Troubleshooting guide
   - Review and refinement

## Success Criteria
- All test types running successfully
- Test accounts properly managed
- Data isolation between tests
- TEC CE integration verified
- Documentation complete