Adding a bulk delete option to the scopes page
This commit is contained in:
1 parent
a9c4c16d4f
commit
7a15d9f7c0
5 files changed
+137
-40
No files matched your search
@@ -333,20 +333,21 @@ async def test_scopes_page_redirects_when_anonymous(client):
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_scopes_page_hides_delete_for_read_only_user(
|
||||
async def test_scopes_page_hides_checkboxes_for_read_only_user(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
ids = await _seed_guide_data(db)
|
||||
await _seed_guide_data(db)
|
||||
await make_user("reader6@example.com", role_ids=[seeded["roles"]["user"].id])
|
||||
await _web_login(client, "reader6@example.com")
|
||||
resp = await client.get("/scopes")
|
||||
assert resp.status_code == 200
|
||||
assert f"/scopes/{ids['s1'].id}" not in resp.text
|
||||
assert 'name="scope_ids"' not in resp.text
|
||||
assert "delete-selected-scopes-btn" not in resp.text
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_scopes_page_shows_delete_for_write_user(
|
||||
async def test_scopes_page_shows_checkboxes_for_write_user(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
@@ -355,11 +356,13 @@ async def test_scopes_page_shows_delete_for_write_user(
|
||||
await _web_login(client, "writer@example.com")
|
||||
resp = await client.get("/scopes")
|
||||
assert resp.status_code == 200
|
||||
assert f'hx-delete="/scopes/{ids["s1"].id}"' in resp.text
|
||||
assert f'name="scope_ids" value="{ids["s1"].id}"' in resp.text
|
||||
assert "delete-selected-scopes-btn" in resp.text
|
||||
assert 'hx-post="/scopes/bulk-delete"' in resp.text
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_scope_removes_augmented_part(
|
||||
async def test_bulk_delete_scopes_removes_selected_augmented_parts(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
@@ -367,17 +370,42 @@ async def test_delete_scope_removes_augmented_part(
|
||||
await make_user("writer2@example.com", is_superuser=True)
|
||||
await _web_login(client, "writer2@example.com")
|
||||
|
||||
resp = await client.delete(f"/scopes/{ids['s1'].id}")
|
||||
resp = await client.post(
|
||||
"/scopes/bulk-delete",
|
||||
data={"scope_ids": [str(ids["s1"].id), str(ids["s2"].id)]},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
|
||||
async with db_sessionmaker() as db:
|
||||
from app.crud import augmented_part as augmented_part_crud
|
||||
|
||||
assert await augmented_part_crud.get(db, ids["s1"].id) is None
|
||||
assert await augmented_part_crud.get(db, ids["s2"].id) is None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_scope_forbidden_without_write_permission(
|
||||
async def test_bulk_delete_scopes_leaves_unselected_rows(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
ids = await _seed_guide_data(db)
|
||||
await make_user("writer3@example.com", is_superuser=True)
|
||||
await _web_login(client, "writer3@example.com")
|
||||
|
||||
resp = await client.post(
|
||||
"/scopes/bulk-delete", data={"scope_ids": [str(ids["s1"].id)]}
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
|
||||
async with db_sessionmaker() as db:
|
||||
from app.crud import augmented_part as augmented_part_crud
|
||||
|
||||
assert await augmented_part_crud.get(db, ids["s1"].id) is None
|
||||
assert await augmented_part_crud.get(db, ids["s2"].id) is not None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_bulk_delete_scopes_forbidden_without_write_permission(
|
||||
client, seeded, make_user, db_sessionmaker
|
||||
):
|
||||
async with db_sessionmaker() as db:
|
||||
@@ -385,5 +413,12 @@ async def test_delete_scope_forbidden_without_write_permission(
|
||||
await make_user("reader7@example.com", role_ids=[seeded["roles"]["user"].id])
|
||||
await _web_login(client, "reader7@example.com")
|
||||
|
||||
resp = await client.delete(f"/scopes/{ids['s1'].id}")
|
||||
resp = await client.post(
|
||||
"/scopes/bulk-delete", data={"scope_ids": [str(ids["s1"].id)]}
|
||||
)
|
||||
assert resp.status_code == 403
|
||||
|
||||
async with db_sessionmaker() as db:
|
||||
from app.crud import augmented_part as augmented_part_crud
|
||||
|
||||
assert await augmented_part_crud.get(db, ids["s1"].id) is not None
|
||||
Reference in new issue
Block a user