mirror of
https://github.com/simonw/dclient.git
synced 2026-09-27 20:34:14 +02:00
dclient aliases command, closes #2
This commit is contained in:
parent
1ecb6a02e8
commit
6bc35f46c2
4 changed files with 156 additions and 11 deletions
|
|
@ -1,6 +1,7 @@
|
|||
from click.testing import CliRunner
|
||||
from dclient.cli import cli
|
||||
import json
|
||||
import pathlib
|
||||
|
||||
|
||||
def test_query_error(httpx_mock):
|
||||
|
|
@ -39,3 +40,47 @@ def test_query(httpx_mock):
|
|||
result = runner.invoke(cli, ["query", "https://example.com", "hello"])
|
||||
assert result.exit_code == 0
|
||||
assert json.loads(result.output) == [{"5 * 2": 10}]
|
||||
|
||||
|
||||
def test_aliases(mocker, tmpdir, httpx_mock):
|
||||
mocker.patch("dclient.cli.get_config_dir", return_value=pathlib.Path(tmpdir))
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["alias", "list"])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == ""
|
||||
|
||||
result = runner.invoke(cli, ["alias", "add", "foo", "https://example.com/foo"])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == ""
|
||||
|
||||
result = runner.invoke(cli, ["alias", "list"])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == "foo = https://example.com/foo\n"
|
||||
|
||||
# Check the aliases file
|
||||
aliases_file = pathlib.Path(tmpdir) / "aliases.json"
|
||||
assert json.loads(aliases_file.read_text()) == {"foo": "https://example.com/foo"}
|
||||
|
||||
# Try a query against that alias
|
||||
httpx_mock.add_response(
|
||||
json={
|
||||
"ok": True,
|
||||
"database": "foo",
|
||||
"query_name": None,
|
||||
"rows": [{"11 * 3": 33}],
|
||||
"truncated": False,
|
||||
"columns": ["11 * 3"],
|
||||
"query": {"sql": "select 11 * 3", "params": {}},
|
||||
"error": None,
|
||||
"private": False,
|
||||
"allow_execute_sql": True,
|
||||
},
|
||||
status_code=200,
|
||||
)
|
||||
result = runner.invoke(cli, ["query", "foo", "select 11 * 3"])
|
||||
assert result.exit_code == 0
|
||||
assert json.loads(result.output) == [{"11 * 3": 33}]
|
||||
|
||||
# Should have hit https://example.com/foo.json
|
||||
url = httpx_mock.get_request().url
|
||||
assert url == "https://example.com/foo.json?sql=select+11+%2A+3&_shape=objects"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue