{"""Tests for code generators.""" import pytest from curlconverter.parser import parse_curl from curlconverter.generators import generate_code, get_supported_languages class TestPythonGenerator: """Tests for Python code generator.""" def test_basic_get_request(self): """Test basic GET request.""" parsed = parse_curl("curl http://example.com") code = generate_code(parsed, "python") assert "import requests" in code assert "url = 'http://example.com'" in code assert "requests.get" in code def test_post_with_json(self): """Test POST with JSON data.""" parsed = parse_curl('curl -X POST -H "Content-Type: application/json" -d \'{"key":"value"}\' http://example.com') code = generate_code(parsed, "python") assert "requests.post" in code assert "json=data" in code def test_basic_auth(self): """Test basic authentication.""" parsed = parse_curl("curl -u user:pass http://example.com") code = generate_code(parsed, "python") assert "Authorization" in code assert "Basic" in code def test_headers(self): """Test custom headers.""" parsed = parse_curl('curl -H "X-Custom: header" http://example.com') code = generate_code(parsed, "python") assert "X-Custom" in code class TestJavaScriptGenerator: """Tests for JavaScript code generator.""" def test_basic_get_request(self): """Test basic GET request.""" parsed = parse_curl("curl http://example.com") code = generate_code(parsed, "javascript") assert "fetch" in code assert "url = 'http://example.com'" in code def test_post_with_data(self): """Test POST with data.""" parsed = parse_curl("curl -X POST -d 'key=value' http://example.com") code = generate_code(parsed, "javascript") assert "POST" in code assert "body" in code class TestGoGenerator: """Tests for Go code generator.""" def test_basic_get_request(self): """Test basic GET request.""" parsed = parse_curl("curl http://example.com") code = generate_code(parsed, "go") assert "package main" in code assert "net/http" in code assert "http.NewRequest" in code def test_post_request(self): """Test POST request.""" parsed = parse_curl("curl -X POST -d 'key=value' http://example.com") code = generate_code(parsed, "go") assert "POST" in code assert "strings.NewReader" in code class TestRubyGenerator: """Tests for Ruby code generator.""" def test_basic_get_request(self): """Test basic GET request.""" parsed = parse_curl("curl http://example.com") code = generate_code(parsed, "ruby") assert "net/http" in code assert "Net::HTTP" in code def test_post_request(self): """Test POST request.""" parsed = parse_curl("curl -X POST -d 'key=value' http://example.com") code = generate_code(parsed, "ruby") assert "Post" in code class TestPHPGenerator: """Tests for PHP code generator.""" def test_basic_get_request(self): """Test basic GET request.""" parsed = parse_curl("curl http://example.com") code = generate_code(parsed, "php") assert "curl_init" in code assert "$url" in code def test_post_request(self): """Test POST request.""" parsed = parse_curl("curl -X POST -d 'key=value' http://example.com") code = generate_code(parsed, "php") assert "CURLOPT_POST" in code or "CURLOPT_CUSTOMREQUEST" in code class TestSupportedLanguages: """Tests for supported languages.""" def test_get_supported_languages(self): """Test getting supported languages.""" languages = get_supported_languages() assert "python" in languages assert "javascript" in languages assert "go" in languages assert "ruby" in languages assert "php" in languages def test_unsupported_language_raises_error(self): """Test unsupported language raises error.""" parsed = parse_curl("curl http://example.com") with pytest.raises(ValueError, match="Unsupported language"): generate_code(parsed, "unsupported")