summaryrefslogtreecommitdiffstats
path: root/tests/test_pgspecial.py
blob: cd99e321b0b2fb419db533c9e818cc19da40d763 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import pytest
from pgcli.packages.sqlcompletion import (
    suggest_type,
    Special,
    Database,
    Schema,
    Table,
    View,
    Function,
    Datatype,
)


def test_slash_suggests_special():
    suggestions = suggest_type("\\", "\\")
    assert set(suggestions) == {Special()}


def test_slash_d_suggests_special():
    suggestions = suggest_type("\\d", "\\d")
    assert set(suggestions) == {Special()}


def test_dn_suggests_schemata():
    suggestions = suggest_type("\\dn ", "\\dn ")
    assert suggestions == (Schema(),)

    suggestions = suggest_type("\\dn xxx", "\\dn xxx")
    assert suggestions == (Schema(),)


def test_d_suggests_tables_views_and_schemas():
    suggestions = suggest_type(r"\d ", r"\d ")
    assert set(suggestions) == {Schema(), Table(schema=None), View(schema=None)}

    suggestions = suggest_type(r"\d xxx", r"\d xxx")
    assert set(suggestions) == {Schema(), Table(schema=None), View(schema=None)}


def test_d_dot_suggests_schema_qualified_tables_or_views():
    suggestions = suggest_type(r"\d myschema.", r"\d myschema.")
    assert set(suggestions) == {Table(schema="myschema"), View(schema="myschema")}

    suggestions = suggest_type(r"\d myschema.xxx", r"\d myschema.xxx")
    assert set(suggestions) == {Table(schema="myschema"), View(schema="myschema")}


def test_df_suggests_schema_or_function():
    suggestions = suggest_type("\\df xxx", "\\df xxx")
    assert set(suggestions) == {Function(schema=None, usage="special"), Schema()}

    suggestions = suggest_type("\\df myschema.xxx", "\\df myschema.xxx")
    assert suggestions == (Function(schema="myschema", usage="special"),)


def test_leading_whitespace_ok():
    cmd = "\\dn "
    whitespace = "   "
    suggestions = suggest_type(whitespace + cmd, whitespace + cmd)
    assert suggestions == suggest_type(cmd, cmd)


def test_dT_suggests_schema_or_datatypes():
    text = "\\dT "
    suggestions = suggest_type(text, text)
    assert set(suggestions) == {Schema(), Datatype(schema=None)}


def test_schema_qualified_dT_suggests_datatypes():
    text = "\\dT foo."
    suggestions = suggest_type(text, text)
    assert suggestions == (Datatype(schema="foo"),)


@pytest.mark.parametrize("command", ["\\c ", "\\connect "])
def test_c_suggests_databases(command):
    suggestions = suggest_type(command, command)
    assert suggestions == (Database(),)