"""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 wrappers from behave import when, then from textwrap import dedent @when('we create table') def step_create_table(context): """Send create table.""" context.cli.sendline('create table a(x text);') @when('we insert into table') def step_insert_into_table(context): """Send insert into table.""" context.cli.sendline('''insert into a(x) values('xxx');''') @when('we update table') def step_update_table(context): """Send insert into table.""" context.cli.sendline('''update a set x = 'yyy' where x = 'xxx';''') @when('we select from table') def step_select_from_table(context): """Send select from table.""" context.cli.sendline('select * from a;') @when('we delete from table') def step_delete_from_table(context): """Send deete from table.""" context.cli.sendline('''delete from a where x = 'yyy';''') @when('we drop table') def step_drop_table(context): """Send drop table.""" context.cli.sendline('drop table a;') @then('we see table created') def step_see_table_created(context): """Wait to see create table output.""" wrappers.expect_exact(context, 'Query OK, 0 rows affected', timeout=2) @then('we see record inserted') def step_see_record_inserted(context): """Wait to see insert output.""" wrappers.expect_exact(context, 'Query OK, 1 row affected', timeout=2) @then('we see record updated') def step_see_record_updated(context): """Wait to see update output.""" wrappers.expect_exact(context, 'Query OK, 1 row affected', timeout=2) @then('we see data selected') def step_see_data_selected(context): """Wait to see select output.""" wrappers.expect_pager( context, dedent("""\ +-----+\r | x |\r +-----+\r | yyy |\r +-----+\r \r """), timeout=2) wrappers.expect_exact(context, '1 row in set', timeout=2) @then('we see record deleted') def step_see_data_deleted(context): """Wait to see delete output.""" wrappers.expect_exact(context, 'Query OK, 1 row affected', timeout=2) @then('we see table dropped') def step_see_table_dropped(context): """Wait to see drop output.""" wrappers.expect_exact(context, 'Query OK, 0 rows affected', timeout=2) @when('we select null') def step_select_null(context): """Send select null.""" context.cli.sendline('select null;') @then('we see null selected') def step_see_null_selected(context): """Wait to see null output.""" wrappers.expect_pager( context, dedent("""\ +--------+\r | NULL |\r +--------+\r | |\r +--------+\r \r """), timeout=2) wrappers.expect_exact(context, '1 row in set', timeout=2)