Example #1
0
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"),
    ])
Example #2
0
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"),
    ])
Example #3
0
def test_lparen_suggests_cols_and_funcs():
    suggestion = suggest_type("SELECT MAX( FROM tbl", "SELECT MAX(")
    assert set(suggestion) == set([
        Column(table_refs=((None, "tbl", None, False), ), qualifiable=True),
        Function(schema=None),
        Keyword("("),
    ])
Example #4
0
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"),
    ])
Example #5
0
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"),
    ])
Example #6
0
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"),
    ])
Example #7
0
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),
    ])
Example #8
0
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),
    ])
Example #9
0
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()])
Example #10
0
def test_alias_suggests_keywords(text):
    suggestions = suggest_type(text, text)
    assert suggestions == (Keyword(), )
Example #11
0
def test_specials_included_for_initial_completion(initial_text):
    suggestions = suggest_type(initial_text, initial_text)

    assert set(suggestions) == set([Keyword(), Special()])
Example #12
0
def test_statements_with_cursor_before_function_body(text):
    suggestions = suggest_type(text, "")
    assert set(suggestions) == set([Keyword(), Special()])
Example #13
0
def test_statements_with_cursor_after_function_body(text):
    suggestions = suggest_type(text, text[:text.find("; ") + 1])
    assert set(suggestions) == set([Keyword(), Special()])
Example #14
0
def test_sub_select_partial_text_suggests_keyword(expression):
    suggestion = suggest_type(expression, expression)
    assert suggestion == (Keyword(), )
Example #15
0
def test_invalid_sql():
    # issue 317
    text = "selt *"
    suggestions = suggest_type(text, text)
    assert suggestions == (Keyword(), )
Example #16
0
def test_keyword_after_alter(sql):
    assert Keyword("ALTER") in set(suggest_type(sql, sql))
Example #17
0
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"),
            ],
        ),
    ],
)