import pytest from pathlib import Path import tempfile import json from config_auditor.generate import ConfigGenerator class TestConfigGenerator: def test_detect_node_project(self): with tempfile.TemporaryDirectory() as tmpdir: (Path(tmpdir) / "package.json").write_text('{"name": "test"}') generator = ConfigGenerator() result = generator.detect_project_type(Path(tmpdir)) assert result == "node" def test_detect_python_project(self): with tempfile.TemporaryDirectory() as tmpdir: (Path(tmpdir) / "pyproject.toml").write_text('[tool.poetry]\nname = "test"') generator = ConfigGenerator() result = generator.detect_project_type(Path(tmpdir)) assert result == "python" def test_detect_typescript_project(self): with tempfile.TemporaryDirectory() as tmpdir: (Path(tmpdir) / "tsconfig.json").write_text('{"compilerOptions": {}}') generator = ConfigGenerator() result = generator.detect_project_type(Path(tmpdir)) assert result == "typescript" def test_detect_from_source_files(self): with tempfile.TemporaryDirectory() as tmpdir: src = Path(tmpdir) / "src" src.mkdir() (src / "main.ts").write_text("const x = 1;") generator = ConfigGenerator() result = generator.detect_project_type(Path(tmpdir)) assert result == "typescript" def test_generate_from_node_template(self): generator = ConfigGenerator() config = generator.generate_from_template("node", Path("/tmp")) assert "name" in config assert "version" in config assert "scripts" in config assert "test" in config["scripts"] def test_generate_from_python_template(self): generator = ConfigGenerator() config = generator.generate_from_template("python", Path("/tmp")) assert "tool" in config assert "poetry" in config["tool"] def test_generate_from_typescript_template(self): generator = ConfigGenerator() config = generator.generate_from_template("typescript", Path("/tmp")) assert "compilerOptions" in config assert config["compilerOptions"]["strict"] is True def test_analyze_project(self): with tempfile.TemporaryDirectory() as tmpdir: (Path(tmpdir) / "package.json").write_text('{"name": "test"}') (Path(tmpdir) / "index.js").write_text("console.log('test');") generator = ConfigGenerator() result = generator.analyze_project(Path(tmpdir)) assert result["type"] == "node" assert "package.json" in result["files"] assert "index.js" in result["files"] def test_unknown_template_raises_error(self): generator = ConfigGenerator() with pytest.raises(ValueError): generator.generate_from_template("unknown", Path("/tmp"))