| | """
|
| | Test Suite for Cancer@Home v2
|
| | Run with: pytest test_cancer_at_home.py
|
| | """
|
| |
|
| | import pytest
|
| | from pathlib import Path
|
| |
|
| |
|
| | class TestConfiguration:
|
| | """Test configuration file"""
|
| |
|
| | def test_config_exists(self):
|
| | """Check if config file exists"""
|
| | assert Path("config.yml").exists()
|
| |
|
| | def test_requirements_exists(self):
|
| | """Check if requirements file exists"""
|
| | assert Path("requirements.txt").exists()
|
| |
|
| |
|
| | class TestBOINC:
|
| | """Test BOINC integration"""
|
| |
|
| | def test_boinc_client_import(self):
|
| | """Test BOINC client can be imported"""
|
| | from backend.boinc import BOINCClient
|
| | assert BOINCClient is not None
|
| |
|
| | def test_boinc_task_submission(self):
|
| | """Test task submission"""
|
| | from backend.boinc import BOINCClient
|
| |
|
| | client = BOINCClient()
|
| | task_id = client.submit_task("test_task", "test_input.txt")
|
| |
|
| | assert task_id is not None
|
| | assert task_id.startswith("wu_")
|
| |
|
| |
|
| | task = client.get_task_status(task_id)
|
| | assert task is not None
|
| | assert task.status == "pending"
|
| |
|
| |
|
| | class TestGDC:
|
| | """Test GDC integration"""
|
| |
|
| | def test_gdc_client_import(self):
|
| | """Test GDC client can be imported"""
|
| | from backend.gdc import GDCClient
|
| | assert GDCClient is not None
|
| |
|
| | def test_gdc_client_initialization(self):
|
| | """Test GDC client initialization"""
|
| | from backend.gdc import GDCClient
|
| |
|
| | client = GDCClient()
|
| | assert client.api_url == "https://api.gdc.cancer.gov"
|
| |
|
| |
|
| | class TestPipeline:
|
| | """Test bioinformatics pipeline"""
|
| |
|
| | def test_fastq_processor_import(self):
|
| | """Test FASTQ processor import"""
|
| | from backend.pipeline import FASTQProcessor
|
| | assert FASTQProcessor is not None
|
| |
|
| | def test_blast_runner_import(self):
|
| | """Test BLAST runner import"""
|
| | from backend.pipeline import BLASTRunner
|
| | assert BLASTRunner is not None
|
| |
|
| | def test_variant_caller_import(self):
|
| | """Test variant caller import"""
|
| | from backend.pipeline import VariantCaller
|
| | assert VariantCaller is not None
|
| |
|
| |
|
| | class TestNeo4j:
|
| | """Test Neo4j integration"""
|
| |
|
| | def test_db_manager_import(self):
|
| | """Test database manager import"""
|
| | from backend.neo4j import DatabaseManager
|
| | assert DatabaseManager is not None
|
| |
|
| | def test_repositories_import(self):
|
| | """Test repository imports"""
|
| | from backend.neo4j import (
|
| | GeneRepository,
|
| | MutationRepository,
|
| | PatientRepository,
|
| | CancerTypeRepository
|
| | )
|
| |
|
| | assert GeneRepository is not None
|
| | assert MutationRepository is not None
|
| | assert PatientRepository is not None
|
| | assert CancerTypeRepository is not None
|
| |
|
| |
|
| | class TestAPI:
|
| | """Test API endpoints"""
|
| |
|
| | def test_api_import(self):
|
| | """Test API can be imported"""
|
| | from backend.api import app
|
| | assert app is not None
|
| |
|
| | def test_api_title(self):
|
| | """Test API metadata"""
|
| | from backend.api import app
|
| | assert app.title == "Cancer@Home v2"
|
| | assert app.version == "2.0.0"
|
| |
|
| |
|
| | class TestDirectoryStructure:
|
| | """Test directory structure"""
|
| |
|
| | def test_backend_exists(self):
|
| | """Check backend directory"""
|
| | assert Path("backend").exists()
|
| | assert Path("backend/__init__.py").exists()
|
| |
|
| | def test_modules_exist(self):
|
| | """Check all modules exist"""
|
| | modules = [
|
| | "backend/api",
|
| | "backend/boinc",
|
| | "backend/gdc",
|
| | "backend/neo4j",
|
| | "backend/pipeline"
|
| | ]
|
| |
|
| | for module in modules:
|
| | assert Path(module).exists()
|
| | assert Path(f"{module}/__init__.py").exists()
|
| |
|
| | def test_frontend_exists(self):
|
| | """Check frontend files"""
|
| | assert Path("frontend").exists()
|
| | assert Path("frontend/index.html").exists()
|
| |
|
| | def test_documentation_exists(self):
|
| | """Check documentation files"""
|
| | docs = [
|
| | "README.md",
|
| | "QUICKSTART.md",
|
| | "USER_GUIDE.md",
|
| | "GRAPHQL_EXAMPLES.md",
|
| | "PROJECT_SUMMARY.md"
|
| | ]
|
| |
|
| | for doc in docs:
|
| | assert Path(doc).exists()
|
| |
|
| |
|
| | class TestSetupScripts:
|
| | """Test setup scripts"""
|
| |
|
| | def test_setup_scripts_exist(self):
|
| | """Check setup scripts"""
|
| | assert Path("setup.ps1").exists()
|
| | assert Path("setup.sh").exists()
|
| |
|
| | def test_run_script_exists(self):
|
| | """Check run script"""
|
| | assert Path("run.py").exists()
|
| |
|
| | def test_docker_compose_exists(self):
|
| | """Check Docker compose file"""
|
| | assert Path("docker-compose.yml").exists()
|
| |
|
| |
|
| | if __name__ == "__main__":
|
| | pytest.main([__file__, "-v"])
|
| |
|