mirror of
https://github.com/simonw/datasette.git
synced 2026-10-19 15:56:58 +02:00
Merge d37284ac03 into c435a80030
This commit is contained in:
commit
eda5b0942b
2 changed files with 54 additions and 1 deletions
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
{% block description_source_license %}{% include "_description_source_license.html" %}{% endblock %}
|
||||
|
||||
<form class="sql core" action="{{ urls.database(database) }}{% if stored_query %}/{{ stored_query }}{% endif %}" method="{% if stored_query_write %}post{% else %}get{% endif %}" data-parameters-url="{{ urls.database(database) }}/-/query/parameters">
|
||||
<form class="sql core" action="{% if stored_query %}{{ urls.query(database, stored_query) }}{% else %}{{ urls.database(database) }}/-/query{% endif %}" method="{% if stored_query_write %}post{% else %}get{% endif %}" data-parameters-url="{{ urls.database(database) }}/-/query/parameters">
|
||||
<h3>Custom SQL query{% if display_rows %} returning {% if truncated %}more than {% endif %}{{ "{:,}".format(display_rows|length) }} row{% if display_rows|length == 1 %}{% else %}s{% endif %}{% endif %}{% if not query_error %}
|
||||
<span class="show-hide-sql">(<a href="{{ show_hide_link }}">{{ show_hide_text }}</a>)</span>
|
||||
{% endif %}</h3>
|
||||
|
|
|
|||
53
tests/test_query_form_action.py
Normal file
53
tests/test_query_form_action.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import pytest
|
||||
from bs4 import BeautifulSoup as Soup
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_ad_hoc_query_form_targets_query_route(ds_client):
|
||||
response = await ds_client.get("/fixtures/-/query?sql=select+1")
|
||||
assert response.status_code == 200
|
||||
|
||||
form = Soup(response.text, "html.parser").select_one("form.sql.core")
|
||||
assert form is not None
|
||||
assert form["action"] == "/fixtures/-/query"
|
||||
|
||||
|
||||
def test_ad_hoc_query_form_action_preserves_base_url(app_client_base_url_prefix):
|
||||
response = app_client_base_url_prefix.get("/prefix/fixtures/-/query?sql=select+1")
|
||||
assert response.status_code == 200
|
||||
|
||||
form = Soup(response.text, "html.parser").select_one("form.sql.core")
|
||||
assert form is not None
|
||||
assert form["action"] == "/prefix/fixtures/-/query"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_stored_query_form_action_encodes_query_name(ds_client):
|
||||
query_name = "query with spaces"
|
||||
await ds_client.ds.update_query("fixtures", query_name, sql="select 1")
|
||||
query_url = ds_client.ds.urls.query("fixtures", query_name)
|
||||
|
||||
response = await ds_client.get(query_url)
|
||||
assert response.status_code == 200
|
||||
|
||||
form = Soup(response.text, "html.parser").select_one("form.sql.core")
|
||||
assert form is not None
|
||||
assert form["action"] == query_url
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_stored_query_form_action_preserves_base_url(
|
||||
app_client_base_url_prefix,
|
||||
):
|
||||
query_name = "query with spaces"
|
||||
await app_client_base_url_prefix.ds.update_query(
|
||||
"fixtures", query_name, sql="select 1"
|
||||
)
|
||||
query_url = app_client_base_url_prefix.ds.urls.query("fixtures", query_name)
|
||||
|
||||
response = app_client_base_url_prefix.get(query_url)
|
||||
assert response.status_code == 200
|
||||
|
||||
form = Soup(response.text, "html.parser").select_one("form.sql.core")
|
||||
assert form is not None
|
||||
assert form["action"] == query_url
|
||||
Loading…
Add table
Add a link
Reference in a new issue