from textwrap import dedent
from behave import then, when
import wrappers


@when("we run dbcli with {arg}")
def step_run_cli_with_arg(context, arg):
    wrappers.run_cli(context, run_args=arg.split("="))


@when("we execute a small query")
def step_execute_small_query(context):
    context.cli.sendline("select 1")


@when("we execute a large query")
def step_execute_large_query(context):
    context.cli.sendline("select {}".format(",".join([str(n) for n in range(1, 50)])))


@then("we see small results in horizontal format")
def step_see_small_results(context):
    wrappers.expect_pager(
        context,
        dedent(
            """\
        +----------+\r
        | ?column? |\r
        |----------|\r
        | 1        |\r
        +----------+\r
        SELECT 1\r
        """
        ),
        timeout=5,
    )


@then("we see large results in vertical format")
def step_see_large_results(context):
    wrappers.expect_pager(
        context,
        dedent(
            """\
        -[ RECORD 1 ]-------------------------\r
        ?column? | 1\r
        ?column? | 2\r
        ?column? | 3\r
        ?column? | 4\r
        ?column? | 5\r
        ?column? | 6\r
        ?column? | 7\r
        ?column? | 8\r
        ?column? | 9\r
        ?column? | 10\r
        ?column? | 11\r
        ?column? | 12\r
        ?column? | 13\r
        ?column? | 14\r
        ?column? | 15\r
        ?column? | 16\r
        ?column? | 17\r
        ?column? | 18\r
        ?column? | 19\r
        ?column? | 20\r
        ?column? | 21\r
        ?column? | 22\r
        ?column? | 23\r
        ?column? | 24\r
        ?column? | 25\r
        ?column? | 26\r
        ?column? | 27\r
        ?column? | 28\r
        ?column? | 29\r
        ?column? | 30\r
        ?column? | 31\r
        ?column? | 32\r
        ?column? | 33\r
        ?column? | 34\r
        ?column? | 35\r
        ?column? | 36\r
        ?column? | 37\r
        ?column? | 38\r
        ?column? | 39\r
        ?column? | 40\r
        ?column? | 41\r
        ?column? | 42\r
        ?column? | 43\r
        ?column? | 44\r
        ?column? | 45\r
        ?column? | 46\r
        ?column? | 47\r
        ?column? | 48\r
        ?column? | 49\r
        SELECT 1\r
        """
        ),
        timeout=5,
    )
