diff options
Diffstat (limited to 'tests/test_smart_completion_multiple_schemata.py')
-rw-r--r-- | tests/test_smart_completion_multiple_schemata.py | 154 |
1 files changed, 85 insertions, 69 deletions
diff --git a/tests/test_smart_completion_multiple_schemata.py b/tests/test_smart_completion_multiple_schemata.py index fd92c373..bfadd1d0 100644 --- a/tests/test_smart_completion_multiple_schemata.py +++ b/tests/test_smart_completion_multiple_schemata.py @@ -4,6 +4,7 @@ import itertools from metadata import (MetaData, alias, name_join, fk_join, join, schema, table, function, wildcard_expansion, column, get_result, result_set, qual, no_qual, parametrize) +from utils import completions_to_set metadata = { 'tables': { @@ -30,20 +31,20 @@ metadata = { }, 'functions': { 'public': [ - ['func1', [], [], [], '', False, False, False], - ['func2', [], [], [], '', False, False, False]], + ['func1', [], [], [], '', False, False, False, False], + ['func2', [], [], [], '', False, False, False, False]], 'custom': [ - ['func3', [], [], [], '', False, False, False], + ['func3', [], [], [], '', False, False, False, False], ['set_returning_func', ['x'], ['integer'], ['o'], - 'integer', False, False, True]], + 'integer', False, False, True, False]], 'Custom': [ - ['func4', [], [], [], '', False, False, False]], + ['func4', [], [], [], '', False, False, False, False]], 'blog': [ ['extract_entry_symbols', ['_entryid', 'symbol'], - ['integer', 'text'], ['i', 'o'], '', False, False, True], + ['integer', 'text'], ['i', 'o'], '', False, False, True, False], ['enter_entry', ['_title', '_text', 'entryid'], ['text', 'text', 'integer'], ['i', 'i', 'o'], - '', False, False, False]], + '', False, False, False, False]], }, 'datatypes': { 'public': ['typ1', 'typ2'], @@ -79,8 +80,9 @@ completers = testdata.get_completers(casing) @parametrize('completer', completers(filtr=True, casing=False, qualify=no_qual)) @parametrize('table', ['users', '"users"']) def test_suggested_column_names_from_shadowed_visible_table(completer, table) : - result = result_set(completer, 'SELECT FROM ' + table, len('SELECT ')) - assert result == set(testdata.columns_functions_and_keywords('users')) + result = get_result(completer, 'SELECT FROM ' + table, len('SELECT ')) + assert completions_to_set(result) == completions_to_set( + testdata.columns_functions_and_keywords('users')) @parametrize('completer', completers(filtr=True, casing=False, qualify=no_qual)) @@ -89,8 +91,8 @@ def test_suggested_column_names_from_shadowed_visible_table(completer, table) : 'WITH users as (SELECT 1 AS foo) SELECT from custom.users', ]) def test_suggested_column_names_from_qualified_shadowed_table(completer, text): - result = result_set(completer, text, position = text.find(' ') + 1) - assert result == set(testdata.columns_functions_and_keywords( + result = get_result(completer, text, position=text.find(' ') + 1) + assert completions_to_set(result) == completions_to_set(testdata.columns_functions_and_keywords( 'users', 'custom' )) @@ -98,8 +100,10 @@ def test_suggested_column_names_from_qualified_shadowed_table(completer, text): @parametrize('completer', completers(filtr=True, casing=False, qualify=no_qual)) @parametrize('text', ['WITH users as (SELECT 1 AS foo) SELECT from users',]) 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()) + result = completions_to_set(get_result( + completer, text, text.find(' ') + 1)) + assert result == completions_to_set( + [column('foo')] + testdata.functions_and_keywords()) @parametrize('completer', completers(casing=False)) @@ -110,8 +114,8 @@ def test_suggested_column_names_from_cte(completer, text): JOIN custom.shipments ON ''' ]) def test_suggested_join_conditions(completer, text): - result = result_set(completer, text) - assert result == set([ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set([ alias('users'), alias('shipments'), name_join('shipments.id = users.id'), @@ -126,8 +130,8 @@ def test_suggested_join_conditions(completer, text): JOIN ''' ), ('users', '"users"', 'Users'))) def test_suggested_joins(completer, query, tbl): - result = result_set(completer, query.format(tbl)) - assert result == set( + result = get_result(completer, query.format(tbl)) + assert completions_to_set(result) == completions_to_set( testdata.schemas_and_from_clause_items() + [join('custom.shipments ON shipments.user_id = {0}.id'.format(tbl))] ) @@ -135,10 +139,10 @@ def test_suggested_joins(completer, query, tbl): @parametrize('completer', completers(filtr=True, casing=False, qualify=no_qual)) def test_suggested_column_names_from_schema_qualifed_table(completer): - result = result_set( + result = get_result( completer, 'SELECT from custom.products', len('SELECT ') ) - assert result == set(testdata.columns_functions_and_keywords( + assert completions_to_set(result) == completions_to_set(testdata.columns_functions_and_keywords( 'products', 'custom' )) @@ -151,15 +155,17 @@ def test_suggested_column_names_from_schema_qualifed_table(completer): ]) @parametrize('completer', completers(filtr=True, casing=False)) def test_suggested_columns_with_insert(completer, text): - assert result_set(completer, text) == set(testdata.columns('orders')) + assert completions_to_set(get_result(completer, text)) == completions_to_set( + testdata.columns('orders')) @parametrize('completer', completers(filtr=True, casing=False, qualify=no_qual)) def test_suggested_column_names_in_function(completer): - result = result_set( + result = get_result( completer, 'SELECT MAX( from custom.products', len('SELECT MAX(') ) - assert result == set(testdata.columns('products', 'custom')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('products', 'custom')) @parametrize('completer', completers(casing=False, aliasing=False)) @@ -178,8 +184,9 @@ def test_suggested_table_names_with_schema_dot( else: start_position = 0 - result = result_set(completer, text) - assert result == set(testdata.from_clause_items('custom', start_position)) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + testdata.from_clause_items('custom', start_position)) @parametrize('completer', completers(casing=False, aliasing=False)) @@ -196,36 +203,39 @@ def test_suggested_table_names_with_schema_dot2( else: start_position = 0 - result = result_set(completer, text) - assert result == set(testdata.from_clause_items('Custom', start_position)) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + testdata.from_clause_items('Custom', start_position)) @parametrize('completer', completers(filtr=True, casing=False)) def test_suggested_column_names_with_qualified_alias(completer): - result = result_set( + result = get_result( completer, 'SELECT p. from custom.products p', len('SELECT p.') ) - assert result == set(testdata.columns('products', 'custom')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('products', 'custom')) @parametrize('completer', completers(filtr=True, casing=False, qualify=no_qual)) def test_suggested_multiple_column_names(completer): - result = result_set( + result = get_result( completer, 'SELECT id, from custom.products', len('SELECT id, ') ) - assert result == set(testdata.columns_functions_and_keywords( + assert completions_to_set(result) == completions_to_set(testdata.columns_functions_and_keywords( 'products', 'custom' )) @parametrize('completer', completers(filtr=True, casing=False)) def test_suggested_multiple_column_names_with_alias(completer): - result = result_set( + result = get_result( completer, 'SELECT p.id, p. from custom.products p', len('SELECT u.id, u.') ) - assert result == set(testdata.columns('products', 'custom')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('products', 'custom')) @parametrize('completer', completers(filtr=True, casing=False)) @@ -235,8 +245,8 @@ def test_suggested_multiple_column_names_with_alias(completer): ]) 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([ + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set([ alias('x'), alias('y'), name_join('y.price = x.price'), @@ -247,22 +257,24 @@ def test_suggestions_after_on(completer, text): @parametrize('completer', completers()) def test_suggested_aliases_after_on_right_side(completer): text = 'SELECT x.id, y.product_name FROM custom.products x JOIN custom.products y ON x.id = ' - result = result_set(completer, text) - assert result == set([alias('x'), alias('y')]) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + [alias('x'), alias('y')]) @parametrize('completer', completers(filtr=True, casing=False, aliasing=False)) def test_table_names_after_from(completer): text = 'SELECT * FROM ' - result = result_set(completer, text) - assert result == set(testdata.schemas_and_from_clause_items()) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + testdata.schemas_and_from_clause_items()) @parametrize('completer', completers(filtr=True, casing=False)) def test_schema_qualified_function_name(completer): text = 'SELECT custom.func' - result = result_set(completer, text) - assert result == set([ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set([ function('func3()', -len('func')), function('set_returning_func()', -len('func'))]) @@ -275,18 +287,19 @@ def test_schema_qualified_function_name(completer): 'ALTER TABLE foo ALTER COLUMN bar TYPE custom.', ]) def test_schema_qualified_type_name(completer, text): - result = result_set(completer, text) - assert result == set(testdata.types('custom')) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + testdata.types('custom')) @parametrize('completer', completers(filtr=True, casing=False)) def test_suggest_columns_from_aliased_set_returning_function(completer): - result = result_set( + result = get_result( completer, 'select f. from custom.set_returning_func() f', len('select f.') ) - assert result == set( + assert completions_to_set(result) == completions_to_set( testdata.columns('set_returning_func', 'custom', 'functions')) @@ -408,8 +421,9 @@ def test_wildcard_column_expansion_with_two_tables_and_parent(completer): ]) 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', 'custom')) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + testdata.columns('users', 'custom')) @parametrize('completer', completers(filtr=True, casing=False)) @@ -419,8 +433,9 @@ def test_suggest_columns_from_unquoted_table(completer, text): ]) def test_suggest_columns_from_quoted_table(completer, text): position = len('SELECT U.') - result = result_set(completer, text, position) - assert result == set(testdata.columns('Users', 'custom')) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + testdata.columns('Users', 'custom')) texts = ['SELECT * FROM ', 'SELECT * FROM public.Orders O CROSS JOIN '] @@ -428,15 +443,16 @@ texts = ['SELECT * FROM ', 'SELECT * FROM public.Orders O CROSS JOIN '] @parametrize('completer', completers(filtr=True, casing=False, aliasing=False)) @parametrize('text', texts) def test_schema_or_visible_table_completion(completer, text): - result = result_set(completer, text) - assert result == set(testdata.schemas_and_from_clause_items()) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + testdata.schemas_and_from_clause_items()) @parametrize('completer', completers(aliasing=True, casing=False, filtr=True)) @parametrize('text', texts) def test_table_aliases(completer, text): - result = result_set(completer, text) - assert result == set(testdata.schemas() + [ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set(testdata.schemas() + [ table('users u'), table('orders o' if text == 'SELECT * FROM ' else 'orders o2'), table('"select" s'), @@ -447,8 +463,8 @@ def test_table_aliases(completer, text): @parametrize('completer', completers(aliasing=True, casing=True, filtr=True)) @parametrize('text', texts) def test_aliases_with_casing(completer, text): - result = result_set(completer, text) - assert result == set(cased_schemas + [ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set(cased_schemas + [ table('users u'), table('Orders O' if text == 'SELECT * FROM ' else 'Orders O2'), table('"select" s'), @@ -459,8 +475,8 @@ def test_aliases_with_casing(completer, text): @parametrize('completer', completers(aliasing=False, casing=True, filtr=True)) @parametrize('text', texts) def test_table_casing(completer, text): - result = result_set(completer, text) - assert result == set(cased_schemas + [ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set(cased_schemas + [ table('users'), table('Orders'), table('"select"'), @@ -534,7 +550,7 @@ def test_function_alias_search_without_aliases(completer): first = result[0] assert first.start_position == -3 assert first.text == 'extract_entry_symbols()' - assert first.display == 'extract_entry_symbols(_entryid)' + assert first.display_text == 'extract_entry_symbols(_entryid)' @parametrize('completer', completers()) @@ -544,7 +560,7 @@ def test_function_alias_search_with_aliases(completer): first = result[0] assert first.start_position == -2 assert first.text == 'enter_entry(_title := , _text := )' - assert first.display == 'enter_entry(_title, _text)' + assert first.display_text == 'enter_entry(_title, _text)' @parametrize('completer',completers(filtr=True, casing=True, qualify=no_qual)) @@ -576,38 +592,38 @@ def test_schema_object_order(completer): @parametrize('completer', completers(casing=False, filtr=False, aliasing=False)) def test_all_schema_objects(completer): text = ('SELECT * FROM ') - result = result_set(completer, text) - assert result >= set( + result = get_result(completer, text) + assert completions_to_set(result) >= completions_to_set( [table(x) for x in ('orders', '"select"', 'custom.shipments')] - + [function(x+'()') for x in ('func2', 'custom.func3')] + + [function(x + '()') for x in ('func2',)] ) @parametrize('completer', completers(filtr=False, aliasing=False, casing=True)) def test_all_schema_objects_with_casing(completer): text = 'SELECT * FROM ' - result = result_set(completer, text) - assert result >= set( + result = get_result(completer, text) + assert completions_to_set(result) >= completions_to_set( [table(x) for x in ('Orders', '"select"', 'CUSTOM.shipments')] - + [function(x+'()') for x in ('func2', 'CUSTOM.func3')] + + [function(x + '()') for x in ('func2',)] ) @parametrize('completer', completers(casing=False, filtr=False, aliasing=True)) def test_all_schema_objects_with_aliases(completer): text = ('SELECT * FROM ') - result = result_set(completer, text) - assert result >= set( + result = get_result(completer, text) + assert completions_to_set(result) >= completions_to_set( [table(x) for x in ('orders o', '"select" s', 'custom.shipments s')] - + [function(x) for x in ('func2() f', 'custom.func3() f')] + + [function(x) for x in ('func2() f',)] ) @parametrize('completer', completers(casing=False, filtr=False, aliasing=True)) def test_set_schema(completer): text = ('SET SCHEMA ') - result = result_set(completer, text) - assert result == set([ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set([ schema(u"'blog'"), schema(u"'Custom'"), schema(u"'custom'"), |