def test_dataset_files_multiple_post_requests(admin_client, deep_file_tree, data_urls):
dataset = factories.DatasetFactory()
actions = {
**deep_file_tree["params"],
"directory_actions": [
{"pathname": "/dir3/"},
{"pathname": "/dir2/"},
],
"file_actions": [
{"id": deep_file_tree["files"]["/dir1/file.csv"].id},
],
}
urls = data_urls(dataset)
res = admin_client.patch(
urls["dataset"],
{"fileset": actions},
content_type="application/json",
)
assert res.status_code == 200
fileset = res.data["fileset"]
assert fileset["added_files_count"] == 13
assert fileset["removed_files_count"] == 0
assert fileset["total_files_count"] == 13
actions = {
**deep_file_tree["params"],
"directory_actions": [
{"pathname": "/dir1/sub/"},
{"pathname": "/dir3/", "action": "remove"},
],
"file_actions": [
{"id": deep_file_tree["files"]["/dir2/subdir1/file1.txt"].id, "action": "remove"},
{"id": deep_file_tree["files"]["/dir2/subdir1/file2.txt"].id, "action": "remove"},
],
}
res = admin_client.patch(
urls["dataset"],
{"fileset": actions},
content_type="application/json",
)
assert res.status_code == 200
fileset = res.data["fileset"]
assert fileset["added_files_count"] == 1
assert fileset["removed_files_count"] == 4
assert fileset["total_files_count"] == 10
res = admin_client.get(urls["files"])
assert_nested_subdict(
{
"results": [
{"pathname": "/dir1/file.csv"},
{"pathname": "/dir1/sub/file.csv"},
{"pathname": "/dir2/a.txt"},
{"pathname": "/dir2/subdir1/file3.txt"},
{"pathname": "/dir2/subdir2/file1.txt"},
{"pathname": "/dir2/subdir2/file2.txt"},
{"pathname": "/dir2/subdir2/file3.txt"},
{"pathname": "/dir2/subdir2/subsub/subsubsub1/file.txt"},
{"pathname": "/dir2/subdir2/subsub/subsubsub2/file1.txt"},
{"pathname": "/dir2/subdir2/subsub/subsubsub2/file2.txt"},
]
},
res.json(),
)