def test_2_statements_2nd_current(): suggestions = suggest_type( "select * from a; select * from ", "select * from a; select * from " ) assert set(suggestions) == set([FromClauseItem(schema=None), Schema()]) suggestions = suggest_type( "select * from a; select from b", "select * from a; select " ) assert ( set(suggestions) == set( [ Column(table_refs=((None, "b", None, False),), qualifiable=True), Function(schema=None), Keyword("SELECT"), ] ) ) # Should work even if first statement is invalid suggestions = suggest_type( "select * from; select * from ", "select * from; select * from " ) assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])
def test_statements_in_function_body(text): suggestions = suggest_type(text, text[:text.find(" ") + 1]) assert ( set(suggestions) == set( [ Column(table_refs=((None, "foo", None, False),), qualifiable=True), Function(schema=None), Keyword("SELECT"), ] ) )
def test_distinct_suggests_cols(text): suggestions = suggest_type(text, text) assert ( set(suggestions) == set( [ Column(table_refs=(), local_tables=(), qualifiable=True), Function(schema=None), Keyword("DISTINCT"), ] ) )
def test_col_comma_suggests_cols(): suggestions = suggest_type("SELECT a, b, FROM tbl", "SELECT a, b,") assert ( set(suggestions) == set( [ Column(table_refs=((None, "tbl", None, False),), qualifiable=True), Function(schema=None), Keyword("SELECT"), ] ) )
def test_select_suggests_cols_and_funcs(): suggestions = suggest_type("SELECT ", "SELECT ") assert ( set(suggestions) == set( [ Column(table_refs=(), qualifiable=True), Function(schema=None), Keyword("SELECT"), ] ) )
def test_sub_select_col_name_completion(): suggestions = suggest_type( "SELECT * FROM (SELECT FROM abc", "SELECT * FROM (SELECT " ) assert ( set(suggestions) == set( [ Column(table_refs=((None, "abc", None, False),), qualifiable=True), Function(schema=None), Keyword("SELECT"), ] ) )
def cols_etc( table, schema=None, alias=None, is_function=False, parent=None, last_keyword=None ): """Returns the expected select-clause suggestions for a single-table select.""" return set( [ Column( table_refs=(TableReference(schema, table, alias, is_function),), qualifiable=True, ), Function(schema=parent), Keyword(last_keyword), ] )
def test_distinct_and_order_by_suggestions_with_aliases( text, text_before, last_keyword ): suggestions = suggest_type(text, text_before) assert ( set(suggestions) == set( [ Column( table_refs=( TableReference(None, "tbl", "x", False), TableReference(None, "tbl1", "y", False), ), local_tables=(), qualifiable=True, ), Function(schema=None), Keyword(last_keyword), ] ) )
def test_invalid_sql(): # issue 317 text = "selt *" suggestions = suggest_type(text, text) assert suggestions == (Keyword(),)
def test_alias_suggests_keywords(text): suggestions = suggest_type(text, text) assert suggestions == (Keyword(),)
def test_specials_included_for_initial_completion(initial_text): suggestions = suggest_type(initial_text, initial_text) assert set(suggestions) == set([Keyword(), Special()])
def test_statements_with_cursor_before_function_body(text): suggestions = suggest_type(text, "") assert set(suggestions) == set([Keyword(), Special()])
def test_statements_with_cursor_after_function_body(text): suggestions = suggest_type(text, text[:text.find("; ") + 1]) assert set(suggestions) == set([Keyword(), Special()])
def test_sub_select_partial_text_suggests_keyword(expression): suggestion = suggest_type(expression, expression) assert suggestion == (Keyword(),)
def test_keyword_after_alter(sql): assert Keyword("ALTER") in set(suggest_type(sql, sql))
def test_suggest_where_keyword(text): # https://github.com/dbcli/mycli/issues/135 suggestions = suggest_type(text, text) assert set(suggestions) == cols_etc("foo", last_keyword="WHERE") @pytest.mark.parametrize( "text, before, expected", [ ( "\\ns abc SELECT ", "SELECT ", [ Column(table_refs=(), qualifiable=True), Function(schema=None), Keyword("SELECT"), ], ), ("\\ns abc SELECT foo ", "SELECT foo ", (Keyword(),)), ( "\\ns abc SELECT t1. FROM tabl1 t1", "SELECT t1.", [ Table(schema="t1"), View(schema="t1"), Column(table_refs=((None, "tabl1", "t1", False),)), Function(schema="t1"), ], ), ], )