Files
ALwrity/backend/api/content_planning/tests/README.md
2025-08-06 12:48:02 +05:30

258 lines
7.2 KiB
Markdown

# Content Planning Module - Testing Foundation
This directory contains comprehensive testing infrastructure for the content planning module refactoring project.
## 📋 Overview
The testing foundation ensures that all functionality is preserved during the refactoring process by:
1. **Establishing Baseline**: Comprehensive functionality tests before refactoring
2. **Continuous Validation**: Testing at each refactoring step
3. **Before/After Comparison**: Automated response comparison
4. **Performance Monitoring**: Tracking response times and performance metrics
## 🧪 Test Scripts
### 1. `functionality_test.py`
**Purpose**: Comprehensive functionality test suite that tests all existing endpoints and functionality.
**Features**:
- Tests all strategy endpoints (CRUD operations)
- Tests all calendar event endpoints
- Tests gap analysis functionality
- Tests AI analytics endpoints
- Tests calendar generation
- Tests content optimization
- Tests error scenarios and validation
- Tests performance metrics
- Tests response format consistency
**Usage**:
```bash
cd backend/content_planning/tests
python functionality_test.py
```
### 2. `before_after_test.py`
**Purpose**: Automated comparison of API responses before and after refactoring.
**Features**:
- Loads baseline data from functionality test results
- Captures responses from refactored API
- Compares response structure and content
- Compares performance metrics
- Generates detailed comparison reports
**Usage**:
```bash
cd backend/content_planning/tests
python before_after_test.py
```
### 3. `test_data.py`
**Purpose**: Centralized test data and fixtures for consistent testing.
**Features**:
- Sample strategy data for different industries
- Sample calendar event data
- Sample gap analysis data
- Sample AI analytics data
- Sample error scenarios
- Performance baseline data
- Validation functions
**Usage**:
```python
from test_data import TestData, create_test_strategy
# Get sample strategy data
strategy_data = TestData.get_strategy_data("technology")
# Create test strategy with custom parameters
custom_strategy = create_test_strategy("healthcare", user_id=2)
```
### 4. `run_tests.py`
**Purpose**: Simple test runner to execute all tests and establish baseline.
**Features**:
- Runs baseline functionality test
- Runs before/after comparison test
- Provides summary reports
- Handles test execution flow
**Usage**:
```bash
cd backend/content_planning/tests
python run_tests.py
```
## 🚀 Quick Start
### Step 1: Establish Baseline
```bash
cd backend/content_planning/tests
python run_tests.py
```
This will:
1. Run comprehensive functionality tests
2. Save baseline results to `functionality_test_results.json`
3. Print summary of test results
### Step 2: Run During Refactoring
After each refactoring step, run:
```bash
python run_tests.py
```
This will:
1. Load existing baseline data
2. Test refactored functionality
3. Compare responses with baseline
4. Report any differences
### Step 3: Validate Final Refactoring
After completing the refactoring:
```bash
python run_tests.py
```
This will confirm that all functionality is preserved.
## 📊 Test Coverage
### Endpoint Coverage
-**Health Endpoints**: All health check endpoints
-**Strategy Endpoints**: CRUD operations, analytics, optimization
-**Calendar Endpoints**: Event management, scheduling, conflicts
-**Gap Analysis**: Analysis execution, competitor analysis, keyword research
-**AI Analytics**: Performance prediction, strategic intelligence
-**Calendar Generation**: AI-powered calendar creation
-**Content Optimization**: Platform-specific optimization
-**Performance Prediction**: Content performance forecasting
-**Content Repurposing**: Cross-platform content adaptation
-**Trending Topics**: Industry-specific trending topics
-**Comprehensive User Data**: All user data aggregation
### Test Scenarios
-**Happy Path**: Normal successful operations
-**Error Handling**: Invalid inputs, missing data, server errors
-**Data Validation**: Input validation and sanitization
-**Response Format**: Consistent API response structure
-**Performance**: Response times and throughput
-**Edge Cases**: Boundary conditions and unusual scenarios
## 📈 Performance Monitoring
### Baseline Metrics
- **Response Time Threshold**: 0.5 seconds
- **Status Code**: 200 for successful operations
- **Error Rate**: < 1%
### Performance Tracking
- Response times for each endpoint
- Status code consistency
- Error rate monitoring
- Memory usage tracking
## 🔧 Configuration
### Test Environment
- **Base URL**: `http://localhost:8000` (configurable)
- **Test Data**: Centralized in `test_data.py`
- **Results**: Saved as JSON files
### Customization
You can customize test parameters by modifying:
- `base_url` in test classes
- Test data in `test_data.py`
- Performance thresholds
- Error scenarios
## 📋 Test Results
### Output Files
- `functionality_test_results.json`: Baseline test results
- `before_after_comparison_results.json`: Comparison results
- Console output: Real-time test progress and summaries
### Result Format
```json
{
"test_name": {
"status": "passed|failed",
"status_code": 200,
"response_time": 0.12,
"response_data": {...},
"error": "error message if failed"
}
}
```
## 🎯 Success Criteria
### Functionality Preservation
-**100% Feature Compatibility**: All existing features work identically
-**Response Consistency**: Identical API responses before and after
-**Error Handling**: Consistent error scenarios and messages
-**Performance**: Maintained or improved performance metrics
### Quality Assurance
-**Automated Testing**: Comprehensive test suite
-**Continuous Validation**: Testing at each refactoring step
-**Risk Mitigation**: Prevents regressions and functionality loss
-**Confidence Building**: Ensures no features are lost during refactoring
## 🚨 Troubleshooting
### Common Issues
1. **Connection Errors**
- Ensure the backend server is running on `http://localhost:8000`
- Check network connectivity
- Verify API endpoints are accessible
2. **Test Failures**
- Review error messages in test results
- Check if baseline data exists
- Verify test data is valid
3. **Performance Issues**
- Monitor server performance
- Check database connectivity
- Review AI service availability
### Debug Mode
Enable debug logging by setting:
```python
import logging
logging.basicConfig(level=logging.DEBUG)
```
## 📚 Next Steps
After establishing the testing foundation:
1. **Day 1**: Extract utilities and test each extraction
2. **Day 2**: Extract services and validate functionality
3. **Day 3**: Extract routes and verify endpoints
4. **Day 4**: Comprehensive testing and validation
Each day should include running the test suite to ensure functionality preservation.
## 🤝 Contributing
When adding new tests:
1. Add test data to `test_data.py`
2. Add test methods to `functionality_test.py`
3. Update comparison logic in `before_after_test.py`
4. Document new test scenarios
## 📞 Support
For issues with the testing foundation:
1. Check the troubleshooting section
2. Review test logs and error messages
3. Verify test data and configuration
4. Ensure backend services are running correctly