コード例 #1
0
def test_suggested_auto_qualified_column_names_two_tables(text, completer):
    position = text.index('  ') + 1
    cols = [column('U.' + c.lower()) for c in cased_users_col_names]
    cols += [column('"Users".' + c.lower()) for c in cased_users2_col_names]
    result = get_result(completer, text, position)
    assert completions_to_set(result) == completions_to_set(
        cols + testdata.functions_and_keywords())
コード例 #2
0
def test_join_using_suggests_columns_after_first_column(completer, complete_event, text):
    pos = len(text)
    result = set(completer.get_completions(
        Document(text=text, cursor_position=pos), complete_event))
    assert set(result) == set([
        column('id'),
        column('email'),
        ])
コード例 #3
0
def test_join_using_suggests_from_last_table(completer, complete_event, text):
    pos = text.index('()') + 1
    result = set(completer.get_completions(
        Document(text=text, cursor_position=pos), complete_event))
    assert set(result) == set([
        column('id'),
        column('email'),
        ])
コード例 #4
0
def test_columns_before_keywords(completer):
    text = 'SELECT * FROM orders WHERE s'
    completions = get_result(completer, text)

    col = column('status', -1)
    kw = keyword('SELECT', -1)

    assert completions.index(col) < completions.index(kw)
コード例 #5
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 = get_result(completer, text, position)
    assert completions_to_set(result) == completions_to_set(cased_funcs + cols
                                                            + testdata.builtin_functions() + testdata.keywords())
コード例 #6
0
def test_suggest_columns_after_three_way_join(completer, complete_event):
    text = '''SELECT * FROM users u1
              INNER JOIN users u2 ON u1.id = u2.id
              INNER JOIN users u3 ON u2.id = u3.'''
    position = len(text)
    result = completer.get_completions(
        Document(text=text, cursor_position=position), complete_event)
    assert (column('id') in
            set(result))
コード例 #7
0
def test_columns_before_keywords(completer, complete_event):
    sql = 'SELECT * FROM orders WHERE s'
    completions = completer.get_completions(
        Document(text=sql, cursor_position=len(sql)), complete_event)

    col = column('status', -1)
    kw = keyword('SELECT', -1)

    assert completions.index(col) < completions.index(kw)
コード例 #8
0
def test_join_using_suggests_columns_after_first_column(completer, text):
    result = result_set(completer, text)
    assert result == set([column('id'), column('email')])
コード例 #9
0
]
cased_tbls = ['Users', 'Orders']
cased_views = ['User_Emails', 'Functions']
casing = (['SELECT', 'PUBLIC'] + cased_func_names + cased_tbls + cased_views +
          cased_users_col_names + cased_users2_col_names)
# Lists for use in assertions
cased_funcs = [
    function(f) for f in ('Custom_Fun()', '_custom_fun()', 'Custom_Func1()',
                          'custom_func2()')
] + [
    function('set_returning_func(x := , y := )',
             display='set_returning_func(x, y)')
]
cased_tbls = [table(t) for t in (cased_tbls + ['"Users"', '"select"'])]
cased_rels = [view(t) for t in cased_views] + cased_funcs + cased_tbls
cased_users_cols = [column(c) for c in cased_users_col_names]
aliased_rels = [
    table(t) for t in ('users u', '"Users" U', 'orders o', '"select" s')
] + [view('user_emails ue'), view('functions f')] + [
    function(f) for f in ('_custom_fun() cf', 'custom_fun() cf',
                          'custom_func1() cf', 'custom_func2() cf')
] + [
    function('set_returning_func(x := , y := ) srf',
             display='set_returning_func(x, y) srf')
]
cased_aliased_rels = [
    table(t) for t in ('Users U', '"Users" U', 'Orders O', '"select" s')
] + [view('User_Emails UE'), view('Functions F')] + [
    function(f) for f in ('_custom_fun() cf', 'Custom_Fun() CF',
                          'Custom_Func1() CF', 'custom_func2() cf')
] + [
コード例 #10
0
def test_no_column_qualification(text, completer):
    cols = [column(c) for c in cased_users_col_names]
    result = result_set(completer, text)
    assert result == set(cols)
コード例 #11
0
def test_column_alias_search_qualified(completer):
    result = get_result(
        completer, 'SELECT E.ei FROM blog.Entries E', len('SELECT E.ei')
    )
    cols = ('EntryID', 'EntryTitle')
    assert result[:3] == [column(c, -2) for c in cols]
コード例 #12
0
def test_suggest_columns_after_three_way_join(completer):
    text = '''SELECT * FROM users u1
              INNER JOIN users u2 ON u1.id = u2.id
              INNER JOIN users u3 ON u2.id = u3.'''
    result = get_result(completer, text)
    assert (column('id') in result)
コード例 #13
0
def test_no_column_qualification(text, completer):
    cols = [column(c) for c in cased_users_col_names]
    result = get_result(completer, text)
    assert completions_to_set(result) == completions_to_set(cols)
コード例 #14
0
def test_suggested_column_names_from_cte(completer, text):
    result = result_set(completer, text, text.find('  ') + 1)
    assert result == set([column('foo')] + testdata.functions_and_keywords())
コード例 #15
0
def test_column_alias_search(completer):
    result = get_result(completer, 'SELECT et FROM blog.Entries E',
                        len('SELECT et'))
    cols = ('EntryText', 'EntryTitle', 'EntryID')
    assert result[:3] == [column(c, -2) for c in cols]
コード例 #16
0
def test_join_using_suggests_columns_after_first_column(completer, text):
    result = result_set(completer, text)
    assert result == set([column('id'), column('email')])
コード例 #17
0
def test_join_using_suggests_from_last_table(completer, text):
    position = text.index('()') + 1
    result = result_set(completer, text, position)
    assert result == set([column('id'), column('email')])
コード例 #18
0
def test_suggest_columns_after_three_way_join(completer):
    text = '''SELECT * FROM users u1
              INNER JOIN users u2 ON u1.id = u2.id
              INNER JOIN users u3 ON u2.id = u3.'''
    result = result_set(completer, text)
    assert (column('id') in result)
コード例 #19
0
cased_func_names = [
    'Custom_Fun', '_custom_fun', 'Custom_Func1', 'custom_func2', 'set_returning_func'
]
cased_tbls = ['Users', 'Orders']
cased_views = ['User_Emails', 'Functions']
casing = (
    ['SELECT', 'PUBLIC'] + cased_func_names + cased_tbls + cased_views
    + cased_users_col_names + cased_users2_col_names
)
# Lists for use in assertions
cased_funcs = [
    function(f) for f in ('Custom_Fun()', '_custom_fun()', 'Custom_Func1()', 'custom_func2()')
] + [function('set_returning_func(x := , y := )', display='set_returning_func(x, y)')]
cased_tbls = [table(t) for t in (cased_tbls + ['"Users"', '"select"'])]
cased_rels = [view(t) for t in cased_views] + cased_funcs + cased_tbls
cased_users_cols = [column(c) for c in cased_users_col_names]
aliased_rels = [
    table(t) for t in ('users u', '"Users" U', 'orders o', '"select" s')
] + [view('user_emails ue'), view('functions f')] + [
    function(f) for f in (
        '_custom_fun() cf', 'custom_fun() cf', 'custom_func1() cf',
        'custom_func2() cf'
    )
] + [function(
    'set_returning_func(x := , y := ) srf',
    display='set_returning_func(x, y) srf'
)]
cased_aliased_rels = [
    table(t) for t in ('Users U', '"Users" U', 'Orders O', '"select" s')
] + [view('User_Emails UE'), view('Functions F')] + [
    function(f) for f in (
コード例 #20
0
def test_join_using_suggests_columns_after_first_column(completer, text):
    result = get_result(completer, text)
    assert completions_to_set(result) == completions_to_set(
        [column('id'), column('email')])
コード例 #21
0
def test_join_using_suggests_from_last_table(completer, text):
    position = text.index('()') + 1
    result = result_set(completer, text, position)
    assert result == set([column('id'), column('email')])
コード例 #22
0
def test_no_column_qualification(text, completer):
    cols = [column(c) for c in cased_users_col_names]
    result = result_set(completer, text)
    assert result == set(cols)
コード例 #23
0
def test_column_alias_search_qualified(completer):
    result = get_result(completer, 'SELECT E.ei FROM blog.Entries E',
                        len('SELECT E.ei'))
    cols = ('EntryID', 'EntryTitle')
    assert result[:3] == [column(c, -2) for c in cols]
コード例 #24
0
def test_suggested_auto_qualified_column_names_two_tables(text, completer):
    position = text.index('  ') + 1
    cols = [column('U.' + c.lower()) for c in cased_users_col_names]
    cols += [column('"Users".' + c.lower()) for c in cased_users2_col_names]
    result = result_set(completer, text, position)
    assert result == set(cols + testdata.functions_and_keywords())
コード例 #25
0
def test_join_using_suggests_from_last_table(completer, text):
    position = text.index('()') + 1
    result = get_result(completer, text, position)
    assert completions_to_set(result) == completions_to_set(
        [column('id'), column('email')])
コード例 #26
0
def test_suggested_column_names_from_cte(completer, text):
    result = completions_to_set(get_result(
        completer, text, text.find('  ') + 1))
    assert result == completions_to_set(
        [column('foo')] + testdata.functions_and_keywords())
コード例 #27
0
def test_column_alias_search(completer):
    result = get_result(
        completer, 'SELECT et FROM blog.Entries E', len('SELECT et')
    )
    cols = ('EntryText', 'EntryTitle', 'EntryID')
    assert result[:3] == [column(c, -2) for c in cols]
コード例 #28
0
def test_suggested_auto_qualified_column_names(text, completer):
    position = text.index('  ') + 1
    cols = [column(c.lower()) for c in cased_users_col_names]
    result = result_set(completer, text, position)
    assert result == set(cols + testdata.functions_and_keywords())