import pytest

from transpose.console import parse_arguments


def test_parse_arguments():
    # Missing required argument - action
    with pytest.raises(SystemExit):
        parse_arguments()


def test_parse_arguments_apply():
    # Missing required argument - target_path (Apply)
    with pytest.raises(SystemExit):
        args = parse_arguments(["apply"])

    args = parse_arguments(["apply", "/tmp/some/path"])
    assert args.action == "apply"
    assert args.target_path == "/tmp/some/path"


def test_parse_arguments_store():
    # Missing required argument - name (Store)
    with pytest.raises(SystemExit):
        args = parse_arguments(["store"])

    # Missing required argument - target_path (Store)
    with pytest.raises(SystemExit):
        args = parse_arguments(["store", "My Name"])

    args = parse_arguments(["store", "My Name", "/tmp/some/path"])
    assert args.action == "store"
    assert args.name == "My Name"
    assert args.target_path == "/tmp/some/path"


def test_parse_arguments_restore():
    # Missing required argument - target_path (Restore)
    with pytest.raises(SystemExit):
        args = parse_arguments(["restore"])

    args = parse_arguments(["restore", "/tmp/some/path"])
    assert args.action == "restore"
    assert args.target_path == "/tmp/some/path"