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


output = """fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:%s

To push to the branch of the same name on the remote, use

    git push origin %s

To choose either option permanently, see push.default in 'git help config'.
"""


def error_msg(localbranch, remotebranch):
    return output % (remotebranch, localbranch)


def test_match():
    assert match(Command('git push', error_msg('foo', 'bar')))


@pytest.mark.parametrize('command', [
    Command('vim', ''),
    Command('git status', error_msg('foo', 'bar')),
    Command('git push', '')
])
def test_not_match(command):
    assert not match(command)


def test_get_new_command():
    new_command = get_new_command(Command('git push', error_msg('foo', 'bar')))
    assert new_command == 'git push origin HEAD:bar'