summaryrefslogtreecommitdiffstats
path: root/tests/test_smart_completion_multiple_schemata.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_smart_completion_multiple_schemata.py')
-rw-r--r--tests/test_smart_completion_multiple_schemata.py154
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'"),