diff options
author | Dick Marinus <dick@mrns.nl> | 2019-02-08 21:24:36 +0100 |
---|---|---|
committer | Dick Marinus <dick@mrns.nl> | 2019-02-08 21:24:36 +0100 |
commit | 351135b61ef9ad3184c49a406544708daf589fe3 (patch) | |
tree | 4294180a5fa15f113480fab7345143aa92a2ee98 /tests | |
parent | 862706ff03f5e40bee839db9ced69c271ba042e5 (diff) |
fix unhashable formatted text
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_naive_completion.py | 42 | ||||
-rw-r--r-- | tests/test_smart_completion_multiple_schemata.py | 134 | ||||
-rw-r--r-- | tests/test_smart_completion_public_schema_only.py | 269 | ||||
-rw-r--r-- | tests/utils.py | 4 |
4 files changed, 246 insertions, 203 deletions
diff --git a/tests/test_naive_completion.py b/tests/test_naive_completion.py index 761c8996..6560f82e 100644 --- a/tests/test_naive_completion.py +++ b/tests/test_naive_completion.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import pytest from prompt_toolkit.completion import Completion from prompt_toolkit.document import Document +from utils import completions_to_set @pytest.fixture @@ -15,32 +16,33 @@ def complete_event(): from mock import Mock return Mock() - def test_empty_string_completion(completer, complete_event): text = '' position = 0 - result = set(completer.get_completions( + result = completions_to_set(completer.get_completions( Document(text=text, cursor_position=position), complete_event)) - assert result == set(map(Completion, completer.all_completions)) + assert result == completions_to_set( + map(Completion, completer.all_completions)) def test_select_keyword_completion(completer, complete_event): text = 'SEL' position = len('SEL') - result = set(completer.get_completions( + result = completions_to_set(completer.get_completions( Document(text=text, cursor_position=position), complete_event)) - assert result == set([Completion(text='SELECT', start_position=-3)]) + assert result == completions_to_set( + [Completion(text='SELECT', start_position=-3)]) def test_function_name_completion(completer, complete_event): text = 'SELECT MA' position = len('SELECT MA') - result = set(completer.get_completions( + result = completions_to_set(completer.get_completions( Document(text=text, cursor_position=position), complete_event)) - assert result == set([ + assert result == completions_to_set([ Completion(text='MATERIALIZED VIEW', start_position=-2), Completion(text='MAX', start_position=-2), Completion(text='MAXEXTENTS', start_position=-2)]) @@ -49,42 +51,34 @@ def test_function_name_completion(completer, complete_event): def test_column_name_completion(completer, complete_event): text = 'SELECT FROM users' position = len('SELECT ') - result = set(completer.get_completions( + result = completions_to_set(completer.get_completions( Document(text=text, cursor_position=position), complete_event)) - assert result == set(map(Completion, completer.all_completions)) - - -def test_paths_completion(completer, complete_event): - text = '\i ' - position = len(text) - result = set(completer.get_completions( - Document(text=text, cursor_position=position), - complete_event, - smart_completion=True)) - assert result > set([Completion(text="setup.py", start_position=0)]) + assert result == completions_to_set( + map(Completion, completer.all_completions)) def test_alter_well_known_keywords_completion(completer, complete_event): text = 'ALTER ' position = len(text) - result = set(completer.get_completions( + result = completions_to_set(completer.get_completions( Document(text=text, cursor_position=position), complete_event, smart_completion=True)) - assert result > set([ + assert result > completions_to_set([ Completion(text="DATABASE", display_meta='keyword'), Completion(text="TABLE", display_meta='keyword'), Completion(text="SYSTEM", display_meta='keyword'), ]) - assert Completion(text="CREATE", display_meta="keyword") not in result + assert completions_to_set( + [Completion(text="CREATE", display_meta="keyword")]) not in result def test_special_name_completion(completer, complete_event): text = '\\' position = len('\\') - result = set(completer.get_completions( + result = completions_to_set(completer.get_completions( Document(text=text, cursor_position=position), complete_event)) # Special commands will NOT be suggested during naive completion mode. - assert result == set() + assert result == completions_to_set([]) diff --git a/tests/test_smart_completion_multiple_schemata.py b/tests/test_smart_completion_multiple_schemata.py index c332cf74..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': { @@ -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,8 +592,8 @@ 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',)] ) @@ -586,8 +602,8 @@ def test_all_schema_objects(completer): @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',)] ) @@ -596,8 +612,8 @@ def test_all_schema_objects_with_casing(completer): @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',)] ) @@ -606,8 +622,8 @@ def test_all_schema_objects_with_aliases(completer): @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'"), diff --git a/tests/test_smart_completion_public_schema_only.py b/tests/test_smart_completion_public_schema_only.py index 0b8fbcc4..9d503245 100644 --- a/tests/test_smart_completion_public_schema_only.py +++ b/tests/test_smart_completion_public_schema_only.py @@ -4,6 +4,8 @@ from metadata import (MetaData, alias, name_join, fk_join, join, keyword, schema, table, view, function, column, wildcard_expansion, get_result, result_set, qual, no_qual, parametrize) from prompt_toolkit.completion import Completion +from utils import completions_to_set + metadata = { @@ -98,20 +100,22 @@ def test_drop_alter_function(completer, action): @parametrize('completer', completers()) def test_empty_string_completion(completer): - result = result_set(completer, '') - assert set(testdata.keywords() + testdata.specials()) == result + result = get_result(completer, '') + assert completions_to_set( + testdata.keywords() + testdata.specials()) == completions_to_set(result) @parametrize('completer', completers()) def test_select_keyword_completion(completer): - result = result_set(completer, 'SEL') - assert result == set([keyword('SELECT', -3)]) + result = get_result(completer, 'SEL') + assert completions_to_set(result) == completions_to_set( + [keyword('SELECT', -3)]) @parametrize('completer', completers()) def test_builtin_function_name_completion(completer): - result = result_set(completer, 'SELECT MA') - assert result == set([ + result = get_result(completer, 'SELECT MA') + assert completions_to_set(result) == completions_to_set([ function('MAX', -2), keyword('MAXEXTENTS', -2), keyword('MATERIALIZED VIEW', -2) ]) @@ -128,8 +132,8 @@ def test_builtin_function_matches_only_at_start(completer): @parametrize('completer', completers(casing=False, aliasing=False)) def test_user_function_name_completion(completer): - result = result_set(completer, 'SELECT cu') - assert result == set([ + result = get_result(completer, 'SELECT cu') + assert completions_to_set(result) == completions_to_set([ function('custom_fun()', -2), function('_custom_fun()', -2), function('custom_func1()', -2), @@ -140,8 +144,8 @@ def test_user_function_name_completion(completer): @parametrize('completer', completers(casing=False, aliasing=False)) def test_user_function_name_completion_matches_anywhere(completer): - result = result_set(completer, 'SELECT om') - assert result == set([ + result = get_result(completer, 'SELECT om') + assert completions_to_set(result) == completions_to_set([ function('custom_fun()', -2), function('_custom_fun()', -2), function('custom_func1()', -2), @@ -150,22 +154,23 @@ def test_user_function_name_completion_matches_anywhere(completer): @parametrize('completer', completers(casing=True)) def test_list_functions_for_special(completer): - result = result_set(completer, r'\df ') - assert result == set( + result = get_result(completer, r'\df ') + assert completions_to_set(result) == completions_to_set( [schema('PUBLIC')] + [function(f) for f in cased_func_names] ) @parametrize('completer', completers(casing=False, qualify=no_qual)) def test_suggested_column_names_from_visible_table(completer): - result = result_set(completer, 'SELECT from users', len('SELECT ')) - assert result == set(testdata.columns_functions_and_keywords('users')) + result = get_result(completer, 'SELECT from users', len('SELECT ')) + assert completions_to_set(result) == completions_to_set( + testdata.columns_functions_and_keywords('users')) @parametrize('completer', completers(casing=True, qualify=no_qual)) def test_suggested_cased_column_names(completer): - result = result_set(completer, 'SELECT from users', len('SELECT ')) - assert result == set(cased_funcs + cased_users_cols + result = get_result(completer, 'SELECT from users', len('SELECT ')) + assert completions_to_set(result) == completions_to_set(cased_funcs + cased_users_cols + testdata.builtin_functions() + testdata.keywords()) @@ -177,8 +182,9 @@ def test_suggested_cased_column_names(completer): 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()) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + cols + testdata.functions_and_keywords()) @parametrize('completer', completers(casing=False, qualify=qual)) @@ -190,8 +196,9 @@ 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()) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + cols + testdata.functions_and_keywords()) @parametrize('completer', completers(casing=True, qualify=['always'])) @@ -201,8 +208,8 @@ def test_suggested_auto_qualified_column_names_two_tables(text, completer): ]) 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) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set(cols) @parametrize('completer', completers(casing=True, qualify=['always'])) @@ -212,65 +219,71 @@ def test_suggested_cased_always_qualified_column_names( 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()) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set(cased_funcs + cols + + testdata.builtin_functions() + testdata.keywords()) @parametrize('completer', completers(casing=False, qualify=no_qual)) def test_suggested_column_names_in_function(completer): - result = result_set( + result = get_result( completer, 'SELECT MAX( from users', len('SELECT MAX(') ) - assert result == set(testdata.columns('users')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('users')) @parametrize('completer', completers(casing=False)) def test_suggested_column_names_with_table_dot(completer): - result = result_set( + result = get_result( completer, 'SELECT users. from users', len('SELECT users.') ) - assert result == set(testdata.columns('users')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('users')) @parametrize('completer', completers(casing=False)) def test_suggested_column_names_with_alias(completer): - result = result_set(completer, 'SELECT u. from users u', len('SELECT u.')) - assert result == set(testdata.columns('users')) + result = get_result(completer, 'SELECT u. from users u', len('SELECT u.')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('users')) @parametrize('completer', completers(casing=False, qualify=no_qual)) def test_suggested_multiple_column_names(completer): - result = result_set( + result = get_result( completer, 'SELECT id, from users u', len('SELECT id, ') ) - assert result == set(testdata.columns_functions_and_keywords('users')) + assert completions_to_set(result) == completions_to_set( + (testdata.columns_functions_and_keywords('users'))) @parametrize('completer', completers(casing=False)) def test_suggested_multiple_column_names_with_alias(completer): - result = result_set( + result = get_result( completer, 'SELECT u.id, u. from users u', len('SELECT u.id, u.') ) - assert result == set(testdata.columns('users')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('users')) @parametrize('completer', completers(casing=True)) def test_suggested_cased_column_names_with_alias(completer): - result = result_set( + result = get_result( completer, 'SELECT u.id, u. from users u', len('SELECT u.id, u.') ) - assert result == set(cased_users_cols) + assert completions_to_set(result) == completions_to_set(cased_users_cols) @parametrize('completer', completers(casing=False)) def test_suggested_multiple_column_names_with_dot(completer): - result = result_set( + result = get_result( completer, 'SELECT users.id, users. from users u', len('SELECT users.id, users.') ) - assert result == set(testdata.columns('users')) + assert completions_to_set(result) == completions_to_set( + testdata.columns('users')) @parametrize('completer', completers(casing=False)) @@ -278,7 +291,7 @@ 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) + result = get_result(completer, text) assert (column('id') in result) @@ -304,8 +317,8 @@ join_condition_texts = [ @parametrize('completer', completers(casing=False)) @parametrize('text', join_condition_texts) 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('U'), alias('U2'), fk_join('U2.userid = U.id') ]) @@ -313,8 +326,8 @@ def test_suggested_join_conditions(completer, text): @parametrize('completer', completers(casing=True)) @parametrize('text', join_condition_texts) def test_cased_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('U'), alias('U2'), fk_join('U2.UserID = U.ID')] ) @@ -347,8 +360,8 @@ def test_suggested_join_conditions_with_same_table_twice(completer, text): 'SELECT * FROM users JOIN users u2 on foo.' ]) def test_suggested_join_conditions_with_invalid_qualifier(completer, text): - result = result_set(completer, text) - assert result == set() + result = get_result(completer, text) + assert result == [] @parametrize('completer', completers(casing=False)) @@ -357,8 +370,9 @@ def test_suggested_join_conditions_with_invalid_qualifier(completer, text): ('SELECT * FROM users JOIN nontable nt on ', 'nt') ]) def test_suggested_join_conditions_with_invalid_table(completer, text, ref): - result = result_set(completer, text) - assert result == set([alias('users'), alias(ref)]) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + [alias('users'), alias(ref)]) @parametrize('completer', completers(casing=False, aliasing=False)) @@ -369,7 +383,7 @@ def test_suggested_join_conditions_with_invalid_table(completer, text, ref): 'SELECT * FROM "Users" u JOIN id', ]) def test_suggested_joins_fuzzy(completer, text): - result = result_set(completer, text) + result = get_result(completer, text) last_word = text.split()[-1] expected = join('users ON users.id = u.userid', -len(last_word)) assert expected in result @@ -394,8 +408,8 @@ join_texts = [ @parametrize('completer', completers(casing=False, aliasing=False)) @parametrize('text', join_texts) def test_suggested_joins(completer, text): - result = result_set(completer, text) - assert result == set( + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( testdata.schemas_and_from_clause_items() + [ join('"Users" ON "Users".userid = Users.id'), join('users users2 ON users2.id = Users.parentid'), @@ -407,8 +421,8 @@ def test_suggested_joins(completer, text): @parametrize('completer', completers(casing=True, aliasing=False)) @parametrize('text', join_texts) def test_cased_joins(completer, text): - result = result_set(completer, text) - assert result == set([schema('PUBLIC')] + cased_rels + [ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_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'), @@ -418,8 +432,8 @@ def test_cased_joins(completer, text): @parametrize('completer', completers(casing=False, aliasing=True)) @parametrize('text', join_texts) def test_aliased_joins(completer, text): - result = result_set(completer, text) - assert result == set(testdata.schemas() + aliased_rels + [ + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_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'), @@ -435,8 +449,8 @@ def test_aliased_joins(completer, text): LEFT JOIN ''' ]) def test_suggested_joins_quoted_schema_qualified_table(completer, text): - result = result_set(completer, text) - assert result == set( + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( testdata.schemas_and_from_clause_items() + [join('public.users ON users.id = "Users".userid')] ) @@ -449,8 +463,8 @@ def test_suggested_joins_quoted_schema_qualified_table(completer, text): ]) 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([ + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set([ alias('u'), name_join('o.id = u.id'), name_join('o.email = u.email'), @@ -466,8 +480,9 @@ def test_suggested_aliases_after_on_right_side(completer, text): position = len( 'SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = ' ) - result = result_set(completer, text, position) - assert result == set([alias('u'), alias('o')]) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + [alias('u'), alias('o')]) @parametrize('completer', completers(casing=False)) @@ -477,8 +492,8 @@ def test_suggested_aliases_after_on_right_side(completer, text): ]) 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([ + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set([ name_join('orders.id = users.id'), name_join('orders.email = users.email'), alias('users'), @@ -493,8 +508,9 @@ def test_suggested_tables_after_on(completer, text): ]) def test_suggested_tables_after_on_right_side(completer, text): position = len('SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = ') - result = result_set(completer, text, position) - assert result == set([alias('users'), alias('orders')]) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + [alias('users'), alias('orders')]) @parametrize('completer', completers(casing=False)) @@ -503,8 +519,9 @@ def test_suggested_tables_after_on_right_side(completer, text): 'SELECT * FROM users INNER JOIN orders USING(', ]) def test_join_using_suggests_common_columns(completer, text): - result = result_set(completer, text) - assert result == set([column('id'), column('email')]) + result = get_result(completer, text) + assert completions_to_set(result) == completions_to_set( + [column('id'), column('email')]) @parametrize('completer', completers(casing=False)) @@ -516,8 +533,9 @@ def test_join_using_suggests_common_columns(completer, text): ]) 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')]) + result = get_result(completer, text, position) + assert completions_to_set(result) == completions_to_set( + [column('id'), column('email')]) @parametrize('completer', completers(casing=False)) @@ -526,8 +544,9 @@ def test_join_using_suggests_from_last_table(completer, text): 'SELECT * FROM users INNER JOIN orders USING(id,', ]) def test_join_using_suggests_columns_after_first_column(completer, text): - result = result_set(completer, text) - |