datasette/tests/test_database.py

86 wiersze
2.4 KiB
Python

from .fixtures import app_client
import pytest
@pytest.mark.parametrize(
"tables,exists",
(
(["facetable", "searchable", "tags", "searchable_tags"], True),
(["foo", "bar", "baz"], False),
),
)
@pytest.mark.asyncio
async def test_table_exists(app_client, tables, exists):
db = app_client.ds.databases["fixtures"]
for table in tables:
actual = await db.table_exists(table)
assert exists == actual
@pytest.mark.asyncio
async def test_get_all_foreign_keys(app_client):
db = app_client.ds.databases["fixtures"]
all_foreign_keys = await db.get_all_foreign_keys()
assert {
"incoming": [],
"outgoing": [
{
"other_table": "attraction_characteristic",
"column": "characteristic_id",
"other_column": "pk",
},
{
"other_table": "roadside_attractions",
"column": "attraction_id",
"other_column": "pk",
},
],
} == all_foreign_keys["roadside_attraction_characteristics"]
assert {
"incoming": [
{
"other_table": "roadside_attraction_characteristics",
"column": "pk",
"other_column": "characteristic_id",
}
],
"outgoing": [],
} == all_foreign_keys["attraction_characteristic"]
@pytest.mark.asyncio
async def test_table_names(app_client):
db = app_client.ds.databases["fixtures"]
table_names = await db.table_names()
assert [
"simple_primary_key",
"primary_key_multiple_columns",
"primary_key_multiple_columns_explicit_label",
"compound_primary_key",
"compound_three_primary_keys",
"foreign_key_references",
"sortable",
"no_primary_key",
"123_starts_with_digits",
"Table With Space In Name",
"table/with/slashes.csv",
"complex_foreign_keys",
"custom_foreign_key_label",
"units",
"tags",
"searchable",
"searchable_tags",
"searchable_fts",
"searchable_fts_content",
"searchable_fts_segments",
"searchable_fts_segdir",
"select",
"infinity",
"facet_cities",
"facetable",
"binary_data",
"roadside_attractions",
"attraction_characteristic",
"roadside_attraction_characteristics",
] == table_names