"""Steps for behavioral style tests are defined in this module. Each step is defined by the string decorating it. This string is used to call the step in "*.feature" file. """ import pexpect import wrappers from behave import when, then @when("we create database") def step_db_create(context): """Send create database.""" context.cli.sendline("create database {0};".format(context.conf["dbname_tmp"])) context.response = {"database_name": context.conf["dbname_tmp"]} @when("we drop database") def step_db_drop(context): """Send drop database.""" context.cli.sendline("drop database {0};".format(context.conf["dbname_tmp"])) @when("we connect to test database") def step_db_connect_test(context): """Send connect to database.""" db_name = context.conf["dbname"] context.currentdb = db_name context.cli.sendline("use {0};".format(db_name)) @when("we connect to quoted test database") def step_db_connect_quoted_tmp(context): """Send connect to database.""" db_name = context.conf["dbname"] context.currentdb = db_name context.cli.sendline("use `{0}`;".format(db_name)) @when("we connect to tmp database") def step_db_connect_tmp(context): """Send connect to database.""" db_name = context.conf["dbname_tmp"] context.currentdb = db_name context.cli.sendline("use {0}".format(db_name)) @when("we connect to dbserver") def step_db_connect_dbserver(context): """Send connect to database.""" context.currentdb = "mysql" context.cli.sendline("use mysql") @then("dbcli exits") def step_wait_exit(context): """Make sure the cli exits.""" wrappers.expect_exact(context, pexpect.EOF, timeout=5) @then("we see dbcli prompt") def step_see_prompt(context): """Wait to see the prompt.""" user = context.conf["user"] host = context.conf["host"] dbname = context.currentdb wrappers.wait_prompt(context, "{0}@{1}:{2}> ".format(user, host, dbname)) @then("we see help output") def step_see_help(context): for expected_line in context.fixture_data["help_commands.txt"]: wrappers.expect_exact(context, expected_line, timeout=1) @then("we see database created") def step_see_db_created(context): """Wait to see create database output.""" wrappers.expect_exact(context, "Query OK, 1 row affected", timeout=2) @then("we see database dropped") def step_see_db_dropped(context): """Wait to see drop database output.""" wrappers.expect_exact(context, "Query OK, 0 rows affected", timeout=2) @then("we see database dropped and no default database") def step_see_db_dropped_no_default(context): """Wait to see drop database output.""" user = context.conf["user"] host = context.conf["host"] database = "(none)" context.currentdb = None wrappers.expect_exact(context, "Query OK, 0 rows affected", timeout=2) wrappers.wait_prompt(context, "{0}@{1}:{2}>".format(user, host, database)) @then("we see database connected") def step_see_db_connected(context): """Wait to see drop database output.""" wrappers.expect_exact(context, 'You are now connected to database "', timeout=2) wrappers.expect_exact(context, '"', timeout=2) wrappers.expect_exact(context, ' as user "{0}"'.format(context.conf["user"]), timeout=2)