diff --git a/tests/test_generate.py b/tests/test_generate.py new file mode 100644 index 0000000..2d725d4 --- /dev/null +++ b/tests/test_generate.py @@ -0,0 +1,87 @@ +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"))