import pytest
from thefuck.rules.git_help_aliased import match, get_new_command
from tests.utils import Command


@pytest.mark.parametrize('script, stdout', [
    ('git help st', "`git st' is aliased to `status'"),
    ('git help ds', "`git ds' is aliased to `diff --staged'")])
def test_match(script, stdout):
    assert match(Command(script=script, stdout=stdout))


@pytest.mark.parametrize('script, stdout', [
    ('git help status', "GIT-STATUS(1)...Git Manual...GIT-STATUS(1)"),
    ('git help diff', "GIT-DIFF(1)...Git Manual...GIT-DIFF(1)")])
def test_not_match(script, stdout):
    assert not match(Command(script=script, stdout=stdout))


@pytest.mark.parametrize('script, stdout, new_command', [
    ('git help st', "`git st' is aliased to `status'", 'git help status'),
    ('git help ds', "`git ds' is aliased to `diff --staged'", 'git help diff')])
def test_get_new_command(script, stdout, new_command):
    assert get_new_command(Command(script=script, stdout=stdout)) == new_command