Test for --metadata=x.yaml

This commit is contained in:
Simon Willison 2020-04-02 11:51:43 -07:00
commit 18705a797a
2 changed files with 45 additions and 3 deletions

View file

@ -327,6 +327,7 @@ def serve(
config, config,
version_note, version_note,
help_config, help_config,
return_instance=False,
): ):
"""Serve up specified SQLite database files with a web UI""" """Serve up specified SQLite database files with a web UI"""
if help_config: if help_config:
@ -375,6 +376,10 @@ def serve(
memory=memory, memory=memory,
version_note=version_note, version_note=version_note,
) )
if return_instance:
# Private utility mechanism for writing unit tests
return ds
# Run async sanity checks - but only if we're not under pytest # Run async sanity checks - but only if we're not under pytest
asyncio.get_event_loop().run_until_complete(check_databases(ds)) asyncio.get_event_loop().run_until_complete(check_databases(ds))

View file

@ -1,8 +1,10 @@
from .fixtures import app_client, make_app_client from .fixtures import app_client, make_app_client, TestClient as _TestClient
from datasette.cli import cli from datasette.cli import cli, serve
from click.testing import CliRunner from click.testing import CliRunner
import pathlib import io
import json import json
import pathlib
import textwrap
def test_inspect_cli(app_client): def test_inspect_cli(app_client):
@ -46,3 +48,38 @@ def test_spatialite_error_if_attempt_to_open_spatialite():
) )
assert result.exit_code != 0 assert result.exit_code != 0
assert "trying to load a SpatiaLite database" in result.output assert "trying to load a SpatiaLite database" in result.output
def test_metadata_yaml():
yaml_file = io.StringIO(
textwrap.dedent(
"""
title: Hello from YAML
"""
)
)
# Annoyingly we have to provide all default arguments here:
ds = serve.callback(
[],
metadata=yaml_file,
immutable=[],
host="127.0.0.1",
port=8001,
debug=False,
reload=False,
cors=False,
sqlite_extensions=[],
inspect_file=None,
template_dir=None,
plugins_dir=None,
static=[],
memory=False,
config=[],
version_note=None,
help_config=False,
return_instance=True,
)
client = _TestClient(ds.app())
client.ds = ds
response = client.get("/-/metadata.json")
assert {"title": "Hello from YAML"} == response.json