109 lines
3.1 KiB
Python
109 lines
3.1 KiB
Python
from litecli.packages.completion_engine import suggest_type
|
|
from test_completion_engine import sorted_dicts
|
|
from litecli.packages.special.utils import format_uptime
|
|
from litecli.packages.special.utils import check_if_sqlitedotcommand
|
|
from utils import run, dbtest, assert_result_equal
|
|
|
|
|
|
def test_import_first_argument():
|
|
test_cases = [
|
|
# text, expecting_arg_idx
|
|
[".import ", 1],
|
|
[".import ./da", 1],
|
|
[".import ./data.csv ", 2],
|
|
[".import ./data.csv t", 2],
|
|
[".import ./data.csv `t", 2],
|
|
['.import ./data.csv "t', 2],
|
|
]
|
|
for text, expecting_arg_idx in test_cases:
|
|
suggestions = suggest_type(text, text)
|
|
if expecting_arg_idx == 1:
|
|
assert suggestions == [{"type": "file_name"}]
|
|
else:
|
|
assert suggestions == [{"type": "table", "schema": []}]
|
|
|
|
|
|
def test_u_suggests_databases():
|
|
suggestions = suggest_type("\\u ", "\\u ")
|
|
assert sorted_dicts(suggestions) == sorted_dicts([{"type": "database"}])
|
|
|
|
|
|
def test_describe_table():
|
|
suggestions = suggest_type("\\dt", "\\dt ")
|
|
assert sorted_dicts(suggestions) == sorted_dicts(
|
|
[
|
|
{"type": "table", "schema": []},
|
|
{"type": "view", "schema": []},
|
|
{"type": "schema"},
|
|
]
|
|
)
|
|
|
|
|
|
def test_list_or_show_create_tables():
|
|
suggestions = suggest_type("\\dt+", "\\dt+ ")
|
|
assert sorted_dicts(suggestions) == sorted_dicts(
|
|
[
|
|
{"type": "table", "schema": []},
|
|
{"type": "view", "schema": []},
|
|
{"type": "schema"},
|
|
]
|
|
)
|
|
|
|
|
|
def test_format_uptime():
|
|
seconds = 59
|
|
assert "59 sec" == format_uptime(seconds)
|
|
|
|
seconds = 120
|
|
assert "2 min 0 sec" == format_uptime(seconds)
|
|
|
|
seconds = 54890
|
|
assert "15 hours 14 min 50 sec" == format_uptime(seconds)
|
|
|
|
seconds = 598244
|
|
assert "6 days 22 hours 10 min 44 sec" == format_uptime(seconds)
|
|
|
|
seconds = 522600
|
|
assert "6 days 1 hour 10 min 0 sec" == format_uptime(seconds)
|
|
|
|
|
|
def test_indexes():
|
|
suggestions = suggest_type(".indexes", ".indexes ")
|
|
assert sorted_dicts(suggestions) == sorted_dicts(
|
|
[
|
|
{"type": "table", "schema": []},
|
|
{"type": "view", "schema": []},
|
|
{"type": "schema"},
|
|
]
|
|
)
|
|
|
|
|
|
def test_check_if_sqlitedotcommand():
|
|
test_cases = [
|
|
[".tables", True],
|
|
[".BiNarY", True],
|
|
["binary", False],
|
|
[234, False],
|
|
[".changes test! test", True],
|
|
["NotDotcommand", False],
|
|
]
|
|
for command, expected_result in test_cases:
|
|
assert check_if_sqlitedotcommand(command) == expected_result
|
|
|
|
|
|
@dbtest
|
|
def test_special_d(executor):
|
|
run(executor, """create table tst_tbl1(a text)""")
|
|
results = run(executor, """\\d""")
|
|
|
|
assert_result_equal(results, headers=["name"], rows=[("tst_tbl1",)], status="")
|
|
|
|
|
|
@dbtest
|
|
def test_special_d_w_arg(executor):
|
|
run(executor, """create table tst_tbl1(a text)""")
|
|
results = run(executor, """\\d tst_tbl1""")
|
|
|
|
assert_result_equal(
|
|
results, headers=["cid", "name", "type", "notnull", "dflt_value", "pk"], rows=[(0, "a", "TEXT", 0, None, 0)], status=""
|
|
)
|