feat: feedback verbetering

This commit is contained in:
kodi
2026-03-15 13:28:11 +01:00
parent a52493459a
commit 66abf991d8
15 changed files with 585 additions and 180 deletions
@@ -117,6 +117,8 @@ class CopyApiGoldenTest(unittest.TestCase):
detail = self._wait_task(body["task_id"])
self.assertEqual(detail["status"], "completed")
self.assertEqual(detail["done_items"], 1)
self.assertEqual(detail["total_items"], 1)
self.assertEqual(detail["total_bytes"], 5)
self.assertEqual(detail["done_bytes"], 5)
self.assertTrue((self.root / "copy.txt").exists())
@@ -159,8 +161,8 @@ class CopyApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 202)
detail = self._wait_task(response.json()["task_id"])
self.assertEqual(detail["status"], "completed")
self.assertEqual(detail["done_items"], 1)
self.assertEqual(detail["total_items"], 1)
self.assertEqual(detail["done_items"], 2)
self.assertEqual(detail["total_items"], 2)
self.assertTrue((self.root / "photos-copy").is_dir())
self.assertEqual((self.root / "photos-copy" / "cover.jpg").read_text(encoding="utf-8"), "img")
self.assertEqual((self.root / "photos-copy" / "nested" / "a.txt").read_text(encoding="utf-8"), "nested")
@@ -232,7 +234,7 @@ class CopyApiGoldenTest(unittest.TestCase):
task_id = response.json()["task_id"]
self.assertTrue(blocking_fs.entered.wait(timeout=2.0))
running = self._wait_for_status(task_id, {"running"})
self.assertEqual(running["current_item"], str(self.root / "a.txt"))
self.assertEqual(running["current_item"], "a.txt")
cancel_response = self._request("POST", f"/api/tasks/{task_id}/cancel")
self.assertEqual(cancel_response.status_code, 200)
@@ -128,8 +128,8 @@ class DuplicateApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 202)
detail = self._wait_task(response.json()["task_id"])
self.assertEqual(detail["status"], "completed")
self.assertEqual(detail["done_items"], 1)
self.assertEqual(detail["total_items"], 1)
self.assertEqual(detail["done_items"], 2)
self.assertEqual(detail["total_items"], 2)
self.assertTrue((self.root / "Folder copy").is_dir())
self.assertEqual((self.root / "Folder copy" / "alpha.txt").read_text(encoding="utf-8"), "A")
self.assertEqual((self.root / "Folder copy" / "nested" / "beta.txt").read_text(encoding="utf-8"), "B")
@@ -171,7 +171,7 @@ class DuplicateApiGoldenTest(unittest.TestCase):
task_id = response.json()["task_id"]
self.assertTrue(blocking_fs.entered.wait(timeout=2.0))
running = self._wait_for_status(task_id, {"running"})
self.assertEqual(running["current_item"], str(self.root / "a.txt"))
self.assertEqual(running["current_item"], "a.txt")
cancel_response = self._request("POST", f"/api/tasks/{task_id}/cancel")
self.assertEqual(cancel_response.status_code, 200)
@@ -29,7 +29,8 @@ class FailingDeleteFilesystemAdapter(FilesystemAdapter):
class FailingBatchFilesystemAdapter(FilesystemAdapter):
def move_file(self, source: str, destination: str) -> None:
if Path(source).name == "fail-file.txt":
source_path = Path(source)
if source_path.name == "fail-file.txt" or "fail-dir" in source_path.parts:
raise OSError("forced batch move failure")
super().move_file(source, destination)
@@ -128,6 +129,8 @@ class MoveApiGoldenTest(unittest.TestCase):
detail = self._wait_task(body["task_id"])
self.assertEqual(detail["status"], "completed")
self.assertEqual(detail["done_items"], 1)
self.assertEqual(detail["total_items"], 1)
self.assertTrue((self.root1 / "moved.txt").exists())
self.assertFalse(src.exists())
@@ -269,7 +272,7 @@ class MoveApiGoldenTest(unittest.TestCase):
task_id = response.json()["task_id"]
self.assertTrue(blocking_fs.entered.wait(timeout=2.0))
running = self._wait_for_status(task_id, {"running"})
self.assertEqual(running["current_item"], str(self.root1 / "a.txt"))
self.assertEqual(running["current_item"], "a.txt")
cancel_response = self._request("POST", f"/api/tasks/{task_id}/cancel")
self.assertEqual(cancel_response.status_code, 200)
@@ -387,8 +390,10 @@ class MoveApiGoldenTest(unittest.TestCase):
def test_move_batch_runtime_io_error_failed_task_shape(self) -> None:
first = self.root1 / "ok-dir"
first.mkdir()
(first / "a.txt").write_text("A", encoding="utf-8")
second = self.root1 / "fail-dir"
second.mkdir()
(second / "b.txt").write_text("B", encoding="utf-8")
target = self.root1 / "target"
target.mkdir()