async def test_tilde_encoded_database_names(db_name): ds = Datasette() ds.add_memory_database(db_name) response = await ds.client.get("/.json") assert db_name in response.json().keys() path = response.json()[db_name]["path"] # And the JSON for that database response2 = await ds.client.get(path + ".json") assert response2.status_code == 200
async def test_hidden_sqlite_stat1_table(): ds = Datasette() db = ds.add_memory_database("db") await db.execute_write("create table normal (id integer primary key, name text)") await db.execute_write("create index idx on normal (name)") await db.execute_write("analyze") data = (await ds.client.get("/db.json?_show_hidden=1")).json() tables = [(t["name"], t["hidden"]) for t in data["tables"]] assert tables == [("normal", False), ("sqlite_stat1", True)]
async def test_format_of_binary_links(size, title, length_bytes): ds = Datasette() db_name = "binary-links-{}".format(size) db = ds.add_memory_database(db_name) sql = "select zeroblob({}) as blob".format(size) await db.execute_write("create table blobs as {}".format(sql)) response = await ds.client.get("/{}/blobs".format(db_name)) assert response.status_code == 200 expected = "{}><Binary: {} bytes></a>".format(title, length_bytes) assert expected in response.text # And test with arbitrary SQL query too sql_response = await ds.client.get("/{}".format(db_name), params={"sql": sql}) assert sql_response.status_code == 200 assert expected in sql_response.text