""" 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 from behave import when, then import wrappers @when("we create database") def step_db_create(context): """ Send create database. """ context.cli.sendline("create database {};".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 {};".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.cli.sendline(f"\\connect {db_name}") @when("we connect to dbserver") def step_db_connect_dbserver(context): """ Send connect to database. """ context.cli.sendline("\\connect postgres") context.currentdb = "postgres" @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. """ db_name = getattr(context, "currentdb", context.conf["dbname"]) wrappers.expect_exact(context, f"{db_name}>", timeout=5) context.atprompt = True @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=2) @then("we see database created") def step_see_db_created(context): """ Wait to see create database output. """ wrappers.expect_pager(context, "CREATE DATABASE\r\n", timeout=5) @then("we see database dropped") def step_see_db_dropped(context): """ Wait to see drop database output. """ wrappers.expect_pager(context, "DROP DATABASE\r\n", timeout=2) @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)