New JSON design for query views (#2118)

* Refs #2111, closes #2110
* New Context dataclass/subclass mechanism, refs #2127
* Define QueryContext and extract get_tables() method, refs #2127
* Fix OPTIONS bug by porting DaatbaseView to be a View subclass
* Expose async_view_for_class.view_class for test_routes test
* Error/truncated aruments for renderers, closes #2130
This commit is contained in:
Simon Willison 2023-08-07 18:47:39 -07:00 committed by GitHub
commit 1377a290cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 579 additions and 112 deletions

View file

@ -12,7 +12,7 @@ import pytest
],
)
async def test_add_message_sets_cookie(ds_client, qs, expected):
response = await ds_client.get(f"/fixtures.message?{qs}")
response = await ds_client.get(f"/fixtures.message?sql=select+1&{qs}")
signed = response.cookies["ds_messages"]
decoded = ds_client.ds.unsign(signed, "messages")
assert expected == decoded
@ -21,7 +21,9 @@ async def test_add_message_sets_cookie(ds_client, qs, expected):
@pytest.mark.asyncio
async def test_messages_are_displayed_and_cleared(ds_client):
# First set the message cookie
set_msg_response = await ds_client.get("/fixtures.message?add_msg=xmessagex")
set_msg_response = await ds_client.get(
"/fixtures.message?sql=select+1&add_msg=xmessagex"
)
# Now access a page that displays messages
response = await ds_client.get("/", cookies=set_msg_response.cookies)
# Messages should be in that HTML