"""Tests for code scanner.""" import pytest from pathlib import Path from src.core.scanner import CodeScanner from src.core.models import IssueCategory, SeverityLevel class TestCodeScanner: """Tests for CodeScanner class.""" def test_scanner_initialization(self): """Test scanner creates empty issue list.""" scanner = CodeScanner() assert scanner.issues == [] def test_supported_extensions(self): """Test supported file extensions.""" scanner = CodeScanner() assert ".py" in scanner.SUPPORTED_EXTENSIONS assert ".js" in scanner.SUPPORTED_EXTENSIONS assert ".ts" in scanner.SUPPORTED_EXTENSIONS def test_scan_single_file(self, tmp_path): """Test scanning a single file.""" test_file = tmp_path / "test.py" test_file.write_text(""" def hello(): # TODO: implement print("Hello") """) scanner = CodeScanner() result = scanner.scan(test_file) assert result.files_scanned == 1 assert len(result.issues) == 1 assert result.issues[0].category == IssueCategory.MAINTAINABILITY assert result.issues[0].severity == SeverityLevel.LOW def test_scan_directory(self, tmp_path): """Test scanning a directory.""" test_dir = tmp_path / "project" test_dir.mkdir() (test_dir / "test.py").write_text("# TODO: test") (test_dir / "test.js").write_text("// FIXME: fix") scanner = CodeScanner() result = scanner.scan(test_dir) assert result.files_scanned == 2 assert len(result.issues) == 2 def test_unsupported_file(self, tmp_path): """Test skipping unsupported files.""" test_file = tmp_path / "test.txt" test_file.write_text("TODO: something") scanner = CodeScanner() result = scanner.scan(test_file) assert result.files_scanned == 0 assert len(result.issues) == 0