feat: tasks hooked up to UI

This commit is contained in:
2026-04-25 10:42:07 +02:00
parent 26d4954724
commit 59be6c213e
6 changed files with 437 additions and 107 deletions

View File

@@ -4,9 +4,11 @@ defmodule BDS.TasksTest do
setup do
original = Application.get_env(:bds, :tasks, [])
Application.put_env(:bds, :tasks, max_concurrent: 3, progress_throttle_ms: 250)
:ok = BDS.Tasks.clear_finished()
on_exit(fn ->
Application.put_env(:bds, :tasks, original)
_ = BDS.Tasks.clear_finished()
end)
:ok
@@ -148,6 +150,31 @@ defmodule BDS.TasksTest do
assert second_id == second.id
end
test "status_snapshot retains recently finished tasks for desktop shell completion state" do
assert {:ok, task} =
BDS.Tasks.submit_task(
"rebuild database",
fn report ->
report.(0.4, "rebuilding")
{:ok, %{counts: %{posts: 2}}}
end,
%{group_id: "maintenance", group_name: "Maintenance"}
)
completed = wait_for_task(task.id, &(&1.status == :completed and &1.result == %{counts: %{posts: 2}}))
snapshot = BDS.Tasks.status_snapshot()
assert snapshot.active_count == 0
assert snapshot.running_count == 0
assert snapshot.pending_count == 0
assert snapshot.running_task_message == nil
assert Enum.any?(snapshot.tasks, fn item ->
item.id == completed.id and item.status == :completed and item.result == %{counts: %{posts: 2}}
end)
end
defp receive_started do
receive do
{:started, name, pid} -> {name, pid}