import pytest
from thefuck.rules.git_commit_add import match, get_new_command
from thefuck.types import Command


@pytest.mark.parametrize(
    "script, output",
    [
        ('git commit -m "test"', "no changes added to commit"),
        ("git commit", "no changes added to commit"),
    ],
)
def test_match(output, script):
    assert match(Command(script, output))


@pytest.mark.parametrize(
    "script, output",
    [
        ('git commit -m "test"', " 1 file changed, 15 insertions(+), 14 deletions(-)"),
        ("git branch foo", ""),
        ("git checkout feature/test_commit", ""),
        ("git push", ""),
    ],
)
def test_not_match(output, script):
    assert not match(Command(script, output))


@pytest.mark.parametrize(
    "script, new_command",
    [
        ("git commit", ["git commit -a", "git commit -p"]),
        ('git commit -m "foo"', ['git commit -a -m "foo"', 'git commit -p -m "foo"']),
    ],
)
def test_get_new_command(script, new_command):
    assert get_new_command(Command(script, "")) == new_command