| """
|
| 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"])
|
|
|