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

output_env_development = '''
Migrations are pending. To resolve this issue, run:

        rails db:migrate RAILS_ENV=development
'''
output_env_test = '''
Migrations are pending. To resolve this issue, run:

        bin/rails db:migrate RAILS_ENV=test
'''


@pytest.mark.parametrize(
    "command",
    [
        Command("", output_env_development),
        Command("", output_env_test),
    ],
)
def test_match(command):
    assert match(command)


@pytest.mark.parametrize(
    "command",
    [
        Command("Environment data not found in the schema. To resolve this issue, run: \n\n", ""),
    ],
)
def test_not_match(command):
    assert not match(command)


@pytest.mark.parametrize(
    "command, new_command",
    [
        (Command("bin/rspec", output_env_development), "rails db:migrate RAILS_ENV=development && bin/rspec"),
        (Command("bin/rspec", output_env_test), "bin/rails db:migrate RAILS_ENV=test && bin/rspec"),
    ],
)
def test_get_new_command(command, new_command):
    assert get_new_command(command) == new_command