summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAmjith Ramanujam <amjith.r@gmail.com>2018-11-27 07:49:54 -0800
committerIrina Truong <i.chernyavska@gmail.com>2018-11-27 07:49:54 -0800
commit3b9041fe36798639b4316fb3e413ac7a04c43da3 (patch)
treec30dc0bdfe218b43279bf320197c98cb4de7a4a0 /tests
parentca2d96825b9444301972f0528eaaa98491bf35c5 (diff)
Fix special commands (#973)
* Add tests for special commands completion.
Diffstat (limited to 'tests')
-rw-r--r--tests/metadata.py8
-rw-r--r--tests/test_naive_completion.py10
-rw-r--r--tests/test_smart_completion_public_schema_only.py9
3 files changed, 25 insertions, 2 deletions
diff --git a/tests/metadata.py b/tests/metadata.py
index 1245a589..782d58d5 100644
--- a/tests/metadata.py
+++ b/tests/metadata.py
@@ -6,6 +6,7 @@ from pgcli.packages.parseutils.meta import FunctionMetadata, ForeignKey
from prompt_toolkit.completion import Completion
from prompt_toolkit.document import Document
from mock import Mock
+from six import iteritems
import pytest
parametrize = pytest.mark.parametrize
@@ -78,6 +79,9 @@ class MetaData(object):
def keywords(self, pos=0):
return [keyword(kw, pos) for kw in self.completer.keywords_tree.keys()]
+ def specials(self, pos=0):
+ return [Completion(text=k, start_position=pos, display_meta=v.description) for k, v in iteritems(self.completer.pgspecial.commands)]
+
def columns(self, tbl, parent='public', typ='tables', pos=0):
if typ == 'functions':
fun = [x for x in self.metadata[typ][parent] if x[0] == tbl][0]
@@ -200,7 +204,9 @@ class MetaData(object):
def get_completer(self, settings=None, casing=None):
metadata = self.metadata
from pgcli.pgcompleter import PGCompleter
- comp = PGCompleter(smart_completion=True, settings=settings)
+ from pgspecial import PGSpecial
+ comp = PGCompleter(smart_completion=True,
+ settings=settings, pgspecial=PGSpecial())
schemata, tables, tbl_cols, views, view_cols = [], [], [], [], []
diff --git a/tests/test_naive_completion.py b/tests/test_naive_completion.py
index 87fc4378..761c8996 100644
--- a/tests/test_naive_completion.py
+++ b/tests/test_naive_completion.py
@@ -78,3 +78,13 @@ def test_alter_well_known_keywords_completion(completer, complete_event):
Completion(text="SYSTEM", display_meta='keyword'),
])
assert 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(
+ Document(text=text, cursor_position=position),
+ complete_event))
+ # Special commands will NOT be suggested during naive completion mode.
+ assert result == set()
diff --git a/tests/test_smart_completion_public_schema_only.py b/tests/test_smart_completion_public_schema_only.py
index 76424610..3ccac9e5 100644
--- a/tests/test_smart_completion_public_schema_only.py
+++ b/tests/test_smart_completion_public_schema_only.py
@@ -99,7 +99,7 @@ def test_drop_alter_function(completer, action):
@parametrize('completer', completers())
def test_empty_string_completion(completer):
result = result_set(completer, '')
- assert set(testdata.keywords()) == result
+ assert set(testdata.keywords() + testdata.specials()) == result
@parametrize('completer', completers())
@@ -929,3 +929,10 @@ def test_set_schema(completer):
result = result_set(completer, text)
expected = set([schema(u"'public'")])
assert result == expected
+
+
+@parametrize('completer', completers())
+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.')])