Ejemplo n.º 1
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()])
Ejemplo n.º 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"),
            ]
        )
    )
Ejemplo n.º 3
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"),
            ]
        )
    )
Ejemplo n.º 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"),
            ]
        )
    )
Ejemplo n.º 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"),
            ]
        )
    )
Ejemplo n.º 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"),
            ]
        )
    )
Ejemplo n.º 7
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),
        ]
    )
Ejemplo n.º 8
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),
            ]
        )
    )
Ejemplo n.º 9
0
def test_invalid_sql():
    # issue 317
    text = "selt *"
    suggestions = suggest_type(text, text)
    assert suggestions == (Keyword(),)
Ejemplo n.º 10
0
def test_alias_suggests_keywords(text):
    suggestions = suggest_type(text, text)
    assert suggestions == (Keyword(),)
Ejemplo n.º 11
0
def test_specials_included_for_initial_completion(initial_text):
    suggestions = suggest_type(initial_text, initial_text)
    assert set(suggestions) == set([Keyword(), Special()])
Ejemplo n.º 12
0
def test_statements_with_cursor_before_function_body(text):
    suggestions = suggest_type(text, "")
    assert set(suggestions) == set([Keyword(), Special()])
Ejemplo n.º 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()])
Ejemplo n.º 14
0
def test_sub_select_partial_text_suggests_keyword(expression):
    suggestion = suggest_type(expression, expression)
    assert suggestion == (Keyword(),)
Ejemplo n.º 15
0
def test_keyword_after_alter(sql):
    assert Keyword("ALTER") in set(suggest_type(sql, sql))
Ejemplo n.º 16
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"),
            ],
        ),
    ],
)