86 lines
3.2 KiB
Python
86 lines
3.2 KiB
Python
import pytest
|
|
from click.testing import CliRunner
|
|
from src.http_convert.cli import cli
|
|
|
|
|
|
@pytest.fixture
|
|
def runner():
|
|
return CliRunner()
|
|
|
|
|
|
class TestCLI:
|
|
def test_version(self, runner):
|
|
result = runner.invoke(cli, ["version"])
|
|
assert result.exit_code == 0
|
|
assert "HTTP Convert" in result.output
|
|
|
|
def test_formats(self, runner):
|
|
result = runner.invoke(cli, ["formats"])
|
|
assert result.exit_code == 0
|
|
assert "curl" in result.output
|
|
assert "httpie" in result.output
|
|
assert "fetch" in result.output
|
|
assert "axios" in result.output
|
|
|
|
def test_convert_curl_to_fetch(self, runner):
|
|
curl_cmd = "curl 'https://api.example.com/users'"
|
|
result = runner.invoke(cli, ["convert", curl_cmd, "--to", "fetch"])
|
|
assert result.exit_code == 0
|
|
assert "fetch(" in result.output or "fetch" in result.output
|
|
|
|
def test_convert_with_explicit_format(self, runner):
|
|
curl_cmd = "curl 'https://api.example.com/users'"
|
|
result = runner.invoke(cli, ["convert", curl_cmd, "--from", "curl", "--to", "httpie"])
|
|
assert result.exit_code == 0
|
|
assert "GET" in result.output
|
|
|
|
def test_convert_missing_output_format(self, runner):
|
|
curl_cmd = "curl 'https://api.example.com/users'"
|
|
result = runner.invoke(cli, ["convert", curl_cmd])
|
|
assert result.exit_code != 0
|
|
|
|
def test_convert_invalid_input(self, runner):
|
|
result = runner.invoke(cli, ["convert", "not a valid input", "--to", "curl"])
|
|
assert result.exit_code != 0
|
|
|
|
def test_config_show(self, runner):
|
|
result = runner.invoke(cli, ["config", "--show"])
|
|
assert result.exit_code == 0
|
|
assert "Configuration" in result.output or "Default Format" in result.output
|
|
|
|
def test_config_set_format(self, runner):
|
|
result = runner.invoke(cli, ["config", "--set-format", "httpie"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_config_toggle_highlighting(self, runner):
|
|
result = runner.invoke(cli, ["config", "--toggle-highlight"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_config_toggle_compact(self, runner):
|
|
result = runner.invoke(cli, ["config", "--toggle-compact"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_config_reset(self, runner):
|
|
result = runner.invoke(cli, ["config", "--reset"])
|
|
assert result.exit_code == 0
|
|
assert "reset" in result.output.lower()
|
|
|
|
def test_config_compact_output(self, runner):
|
|
curl_cmd = "curl 'https://api.example.com/users'"
|
|
result = runner.invoke(cli, ["convert", curl_cmd, "--to", "fetch", "--compact"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_config_no_highlight(self, runner):
|
|
curl_cmd = "curl 'https://api.example.com/users'"
|
|
result = runner.invoke(cli, ["convert", curl_cmd, "--to", "fetch", "--no-highlight"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_help(self, runner):
|
|
result = runner.invoke(cli, ["--help"])
|
|
assert result.exit_code == 0
|
|
assert "convert" in result.output
|
|
assert "interactive" in result.output
|
|
assert "formats" in result.output
|
|
assert "config" in result.output
|
|
assert "web" in result.output
|