Пример #1
0
def test_suggested_joins(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas_and_from_clause_items() + [
        join('"Users" ON "Users".userid = Users.id'),
        join('users users2 ON users2.id = Users.parentid'),
        join('users users2 ON users2.parentid = Users.id'),
    ])
Пример #2
0
def test_suggested_join_conditions(completer, text):
    result = result_set(completer, text)
    assert result == set([
        alias('users'),
        alias('shipments'),
        name_join('shipments.id = users.id'),
        fk_join('shipments.user_id = users.id')])
Пример #3
0
def test_suggested_multiple_column_names(completer):
    result = result_set(
        completer, 'SELECT id,  from custom.products', len('SELECT id, ')
    )
    assert result == set(testdata.columns_functions_and_keywords(
        'products', 'custom'
    ))
Пример #4
0
def test_suggested_cased_always_qualified_column_names(completer):
    text = 'SELECT  from users'
    position = len('SELECT ')
    cols = [column('users.' + c) for c in cased_users_col_names]
    result = result_set(completer, text, position)
    assert result == set(cased_funcs + cols + testdata.builtin_functions() +
                         testdata.keywords())
def test_aliased_joins(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas() + aliased_rels + [
        join('"Users" U ON U.userid = Users.id'),
        join('users u ON u.id = Users.parentid'),
        join('users u ON u.parentid = Users.id'),
    ])
Пример #6
0
def test_suggested_multiple_column_names_with_alias(completer):
    result = result_set(
        completer,
        'SELECT p.id, p. from custom.products p',
        len('SELECT u.id, u.')
    )
    assert result == set(testdata.columns('products', 'custom'))
def test_suggested_multiple_column_names_with_dot(completer):
    result = result_set(
        completer,
        'SELECT users.id, users. from users u',
        len('SELECT users.id, users.')
    )
    assert result == set(testdata.columns('users'))
def test_user_function_name_completion_matches_anywhere(completer):
    result = result_set(completer, 'SELECT om')
    assert result == set([
        function('custom_fun()', -2),
        function('_custom_fun()', -2),
        function('custom_func1()', -2),
        function('custom_func2()', -2)])
def test_cased_joins(completer, text):
    result = result_set(completer, text)
    assert result == set([schema('PUBLIC')] + cased_rels + [
        join('"Users" ON "Users".UserID = Users.ID'),
        join('Users Users2 ON Users2.ID = Users.PARENTID'),
        join('Users Users2 ON Users2.PARENTID = Users.ID'),
    ])
def test_suggest_columns_from_aliased_set_returning_function(completer):
    result = result_set(
        completer, 'select f. from set_returning_func() f', len('select f.')
    )
    assert result == set(
        testdata.columns('set_returning_func', typ='functions')
    )
def test_join_functions_using_suggests_common_columns(completer):
    text = '''SELECT * FROM set_returning_func() f1
              INNER JOIN set_returning_func() f2 USING ('''
    result = result_set(completer, text)
    assert result == set(
        testdata.columns('set_returning_func', typ='functions')
    )
def test_suggest_columns_from_set_returning_function(completer):
    result = result_set(
        completer, 'select  from set_returning_func()', len('select ')
    )
    assert result == set(testdata.columns_functions_and_keywords(
        'set_returning_func', typ='functions'
    ))
Пример #13
0
def test_all_schema_objects_with_casing(completer):
    text = 'SELECT * FROM '
    result = result_set(completer, text)
    assert result >= set(
        [table(x) for x in ('Orders', '"select"', 'CUSTOM.shipments')]
        + [function(x+'()') for x in ('func2', 'CUSTOM.func3')]
    )
Пример #14
0
def test_suggested_column_names_from_schema_qualifed_table(completer):
    result = result_set(
        completer, 'SELECT  from custom.products', len('SELECT ')
    )
    assert result == set(testdata.columns_functions_and_keywords(
        'products', 'custom'
    ))
Пример #15
0
def test_schema_qualified_function_name(completer):
    text = 'SELECT custom.func'
    result = result_set(completer, text)
    assert result == set([
        function('func3()', -len('func')),
        function('set_returning_func()', -len('func'))
    ])
Пример #16
0
def test_all_schema_objects_with_aliases(completer):
    text = ('SELECT * FROM ')
    result = result_set(completer, text)
    assert result >= set(
        [table(x) for x in ('orders o', '"select" s', 'custom.shipments s')]
        + [function(x) for x in ('func2() f', 'custom.func3() f')]
    )
def test_special_name_completion(completer):
    result = result_set(completer, '\\t')
    assert result == set([
        Completion(text='\\timing',
                   start_position=-2,
                   display_meta='Toggle timing of commands.')
    ])
Пример #18
0
def test_join_functions_on_suggests_columns_and_join_conditions(completer):
    text = '''SELECT * FROM set_returning_func() f1
              INNER JOIN set_returning_func() f2 ON f1.'''
    result = result_set(completer, text)
    assert result == set(
        [name_join('y = f2.y'), name_join('x = f2.x')] +
        testdata.columns('set_returning_func', typ='functions'))
Пример #19
0
def test_builtin_function_name_completion(completer):
    result = result_set(completer, 'SELECT MA')
    assert result == set([
        function('MAX', -2),
        keyword('MAXEXTENTS', -2),
        keyword('MATERIALIZED VIEW', -2)
    ])
Пример #20
0
def test_all_schema_objects(completer):
    text = ('SELECT * FROM ')
    result = result_set(completer, text)
    assert result >= set(
        [table(x) for x in ('orders', '"select"', 'custom.shipments')]
        + [function(x+'()') for x in ('func2', 'custom.func3')]
    )
Пример #21
0
def test_cased_joins(completer, text):
    result = result_set(completer, text)
    assert result == set([schema('PUBLIC')] + cased_rels + [
        join('"Users" ON "Users".UserID = Users.ID'),
        join('Users Users2 ON Users2.ID = Users.PARENTID'),
        join('Users Users2 ON Users2.PARENTID = Users.ID'),
    ])
Пример #22
0
def test_aliased_joins(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas() + aliased_rels + [
        join('"Users" U ON U.userid = Users.id'),
        join('users u ON u.id = Users.parentid'),
        join('users u ON u.parentid = Users.id'),
    ])
Пример #23
0
def test_aliases_with_casing(completer, text):
    result = result_set(completer, text)
    assert result == set(cased_schemas + [
        table('users u'),
        table('Orders O' if text == 'SELECT * FROM ' else 'Orders O2'),
        table('"select" s'),
        function('Func1() F'),
        function('func2() f')])
Пример #24
0
def test_set_schema(completer):
    text = ('SET SCHEMA ')
    result = result_set(completer, text)
    assert result == set([
        schema(u"'blog'"),
        schema(u"'Custom'"),
        schema(u"'custom'"),
        schema(u"'public'")])
Пример #25
0
def test_user_function_name_completion_matches_anywhere(completer):
    result = result_set(completer, 'SELECT om')
    assert result == set([
        function('custom_fun()', -2),
        function('_custom_fun()', -2),
        function('custom_func1()', -2),
        function('custom_func2()', -2)
    ])
def test_join_functions_on_suggests_columns_and_join_conditions(completer):
    text = '''SELECT * FROM set_returning_func() f1
              INNER JOIN set_returning_func() f2 ON f1.'''
    result = result_set(completer, text)
    assert result == set(
        [name_join('y = f2.y'), name_join('x = f2.x')] +
        testdata.columns('set_returning_func', typ='functions')
    )
Пример #27
0
def test_table_casing(completer, text):
    result = result_set(completer, text)
    assert result == set(cased_schemas + [
        table('users'),
        table('Orders'),
        table('"select"'),
        function('Func1()'),
        function('func2()')])
def test_suggested_aliases_after_on(completer, text):
    position = len('SELECT u.name, o.id FROM users u JOIN orders o ON ')
    result = result_set(completer, text, position)
    assert result == set([
        alias('u'),
        name_join('o.id = u.id'),
        name_join('o.email = u.email'),
        alias('o')])
Пример #29
0
def test_table_aliases(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas() + [
        table('users u'),
        table('orders o' if text == 'SELECT * FROM ' else 'orders o2'),
        table('"select" s'),
        function('func1() f'),
        function('func2() f')])
def test_suggested_aliases_after_on(completer, text):
    position = len('SELECT u.name, o.id FROM users u JOIN orders o ON ')
    result = result_set(completer, text, position)
    assert result == set([
        alias('u'),
        name_join('o.id = u.id'),
        name_join('o.email = u.email'),
        alias('o')])
Пример #31
0
def test_suggest_columns_from_aliased_set_returning_function(completer):
    result = result_set(
        completer,
        'select f. from custom.set_returning_func() f',
        len('select f.')
    )
    assert result == set(
        testdata.columns('set_returning_func', 'custom', 'functions'))
def test_suggested_joins(completer, text):
    result = result_set(completer, text)
    assert result == set(
        testdata.schemas_and_from_clause_items() + [
        join('"Users" ON "Users".userid = Users.id'),
        join('users users2 ON users2.id = Users.parentid'),
        join('users users2 ON users2.parentid = Users.id'),
        ]
    )
def test_suggested_tables_after_on(completer, text):
    position = len('SELECT users.name, orders.id FROM users JOIN orders ON ')
    result = result_set(completer, text, position)
    assert result == set([
        name_join('orders.id = users.id'),
        name_join('orders.email = users.email'),
        alias('users'),
        alias('orders')
    ])
Пример #34
0
def test_suggestions_after_on(completer, text):
    position = len('SELECT x.id, y.product_name FROM custom.products x JOIN custom.products y ON ')
    result = result_set(completer, text, position)
    assert result == set([
        alias('x'),
        alias('y'),
        name_join('y.price = x.price'),
        name_join('y.product_name = x.product_name'),
        name_join('y.id = x.id')])
def test_suggested_cased_always_qualified_column_names(
    completer
):
    text = 'SELECT  from users'
    position = len('SELECT ')
    cols = [column('users.' + c) for c in cased_users_col_names]
    result = result_set(completer, text, position)
    assert result == set(cased_funcs + cols
        + testdata.builtin_functions() + testdata.keywords())
def test_user_function_name_completion(completer):
    result = result_set(completer, 'SELECT cu')
    assert result == set([
        function('custom_fun()', -2),
        function('_custom_fun()', -2),
        function('custom_func1()', -2),
        function('custom_func2()', -2),
        keyword('CURRENT', -2),
    ])
def test_user_function_name_completion(completer):
    result = result_set(completer, 'SELECT cu')
    assert result == set([
        function('custom_fun()', -2),
        function('_custom_fun()', -2),
        function('custom_func1()', -2),
        function('custom_func2()', -2),
        keyword('CURRENT', -2),
    ])
def test_suggested_tables_after_on(completer, text):
    position = len('SELECT users.name, orders.id FROM users JOIN orders ON ')
    result = result_set(completer, text, position)
    assert result == set([
        name_join('orders.id = users.id'),
        name_join('orders.email = users.email'),
        alias('users'),
        alias('orders')
    ])
Пример #39
0
def test_suggest_columns_from_cte(completer):
    result = result_set(
        completer, 'WITH cte AS (SELECT foo, bar FROM baz) SELECT  FROM cte',
        len('WITH cte AS (SELECT foo, bar FROM baz) SELECT '))
    expected = ([
        Completion('foo', 0, display_meta='column'),
        Completion('bar', 0, display_meta='column'),
    ] + testdata.functions_and_keywords())

    assert set(expected) == result
def test_suggested_table_names_with_schema_dot2(completer, text,
                                                use_leading_double_quote):
    if use_leading_double_quote:
        text += '"'
        start_position = -1
    else:
        start_position = 0

    result = result_set(completer, text)
    assert result == set(testdata.from_clause_items('Custom', start_position))
def test_suggest_cte_names(completer):
    text = '''
        WITH cte1 AS (SELECT a, b, c FROM foo),
             cte2 AS (SELECT d, e, f FROM bar)
        SELECT * FROM
    '''
    result = result_set(completer, text)
    expected = set([
        Completion('cte1', 0, display_meta='table'),
        Completion('cte2', 0, display_meta='table'),
    ])
    assert expected <= result
def test_suggest_cte_names(completer):
    text = '''
        WITH cte1 AS (SELECT a, b, c FROM foo),
             cte2 AS (SELECT d, e, f FROM bar)
        SELECT * FROM
    '''
    result = result_set(completer, text)
    expected = set([
        Completion('cte1', 0, display_meta='table'),
        Completion('cte2', 0, display_meta='table'),
    ])
    assert expected <= result
def test_duplicate_table_aliases(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas() + [
        table('orders o2'),
        table('users u'),
        table('"Users" U'),
        table('"select" s'),
        view('user_emails ue'),
        function('_custom_fun() cf'),
        function('custom_fun() cf'),
        function('custom_func1() cf'),
        function('custom_func2() cf'),
        function('set_returning_func() srf')])
def test_duplicate_aliases_with_casing(completer, text):
    result = result_set(completer, text)
    assert result == set([
        schema('PUBLIC'),
        table('Orders O2'),
        table('Users U'),
        table('"Users" U'),
        table('"select" s'),
        view('User_Emails UE'),
        function('_custom_fun() cf'),
        function('Custom_Fun() CF'),
        function('Custom_Func1() CF'),
        function('custom_func2() cf'),
        function('set_returning_func() srf')])
def test_suggest_columns_from_cte(completer):
    result = result_set(
        completer,
        'WITH cte AS (SELECT foo, bar FROM baz) SELECT  FROM cte',
        len('WITH cte AS (SELECT foo, bar FROM baz) SELECT ')
    )
    expected = (
        [
            Completion('foo', 0, display_meta='column'),
            Completion('bar', 0, display_meta='column'),
        ] + testdata.functions_and_keywords()
    )

    assert set(expected) == result
def test_duplicate_table_aliases(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas() + [
        table('orders o2'),
        table('users u'),
        table('"Users" U'),
        table('"select" s'),
        view('user_emails ue'),
        view('functions f'),
        function('_custom_fun() cf'),
        function('custom_fun() cf'),
        function('custom_func1() cf'),
        function('custom_func2() cf'),
        function(
            'set_returning_func(x := , y := ) srf',
            display='set_returning_func(x, y) srf'
        ),
    ])
def test_duplicate_aliases_with_casing(completer, text):
    result = result_set(completer, text)
    assert result == set([
        schema('PUBLIC'),
        table('Orders O2'),
        table('Users U'),
        table('"Users" U'),
        table('"select" s'),
        view('User_Emails UE'),
        view('Functions F'),
        function('_custom_fun() cf'),
        function('Custom_Fun() CF'),
        function('Custom_Func1() CF'),
        function('custom_func2() cf'),
        function(
            'set_returning_func(x := , y := ) srf',
            display='set_returning_func(x, y) srf'
        ),
    ])
def test_table_aliases(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas() + aliased_rels)
def test_keyword_after_alter(completer):
    text = 'ALTER TABLE users ALTER '
    expected = Completion('COLUMN', start_position=0, display_meta='keyword')
    completions = result_set(completer, text)
    assert expected in set(completions)
def test_suggest_datatype(text, completer):
    result = result_set(completer, text)
    assert result == set(
        testdata.schemas() + testdata.types() + testdata.builtin_datatypes()
    )
def test_cte_qualified_columns(completer, text):
    result = result_set(completer, text)
    expected = [Completion('foo', 0, display_meta='column')]
    assert set(expected) == result
def test_suggest_columns_from_escaped_table_alias(completer):
    result = result_set(completer, 'select * from "select" s where s.')
    assert result == set(testdata.columns('select'))
def test_suggest_columns_from_unquoted_table(completer, text):
    position = len('SELECT U.')
    result = result_set(completer, text, position)
    assert result == set(testdata.columns('users'))
def test_suggest_columns_from_quoted_table(completer):
    result = result_set(
        completer, 'SELECT U. FROM "Users" U', len('SELECT U.')
    )
    assert result == set(testdata.columns('Users'))
def test_set_schema(completer):
    text = ('SET SCHEMA ')
    result = result_set(completer, text)
    expected = set([schema(u"'public'")])
    assert result == expected
def test_aliases_with_casing(completer, text):
    result = result_set(completer, text)
    assert result == set([schema('PUBLIC')] + cased_aliased_rels)
def test_table_casing(completer, text):
    result = result_set(completer, text)
    assert result == set([schema('PUBLIC')] + cased_rels)
def test_insert(completer, text):
    position = text.find('(') + 1
    result = result_set(completer, text, position)
    assert result == set(testdata.columns('users'))
def test_schema_or_visible_table_completion(completer, text):
    result = result_set(completer, text)
    assert result == set(testdata.schemas_and_from_clause_items())
def test_empty_string_completion(completer):
    result = result_set(completer, '')
    assert set(testdata.keywords()) == result