Skip to content

Commit c41b2ef

Browse files
committed
Test that shared asset is not deleted if still referenced.
1 parent 4c48e82 commit c41b2ef

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

tiled/_tests/test_catalog.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,52 @@ async def test_delete_subtree(tmpdir):
384384
assert len(assets_after_delete) == 2
385385

386386

387+
@pytest.mark.asyncio
388+
async def test_delete_asset_registered_twice(tmpdir):
389+
# Do not use client fixture here.
390+
# The Context must be opened inside the test or we run into
391+
# event loop crossing issues with the Postgres test.
392+
tree = in_memory(readable_storage=[str(tmpdir)])
393+
with Context.from_app(build_app(tree)) as context:
394+
client = from_context(context)
395+
396+
for i in range(1, 4):
397+
with open(tmpdir / f"test_{i}.csv", "w") as file:
398+
file.write(
399+
"""a, b, c
400+
1, 2, 3
401+
4, 5, 6
402+
"""
403+
)
404+
# a has children b1 and b2, which each contain arrays
405+
a = client.create_container("a")
406+
b1 = a.create_container("b1")
407+
await register(b1, tmpdir / "test_1.csv")
408+
await register(b1, tmpdir / "test_2.csv")
409+
b2 = a.create_container("b2")
410+
await register(b2, tmpdir / "test_1.csv")
411+
await register(b2, tmpdir / "test_3.csv")
412+
413+
data_sources_before_delete = (
414+
await tree.context.execute("SELECT * from data_sources")
415+
).all()
416+
assert len(data_sources_before_delete) == 4
417+
assets_after_delete = (await tree.context.execute("SELECT * from assets")).all()
418+
assert len(assets_after_delete) == 3 # shared by two data sources
419+
420+
b2.delete_tree()
421+
422+
data_sources_after_delete = (
423+
await tree.context.execute("SELECT * from data_sources")
424+
).all()
425+
assert len(data_sources_after_delete) == 2
426+
assets_after_delete = (await tree.context.execute("SELECT * from assets")).all()
427+
assert len(assets_after_delete) == 2
428+
429+
client["a"]["b1"]["test_1"][:]
430+
b2.delete_tree()
431+
432+
387433
@pytest.mark.asyncio
388434
async def test_delete_tree(tmpdir):
389435
# Do not use client fixture here.

0 commit comments

Comments
 (0)