chore: merged different progress reporters

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-05-01 17:12:49 +02:00
parent 79ee67c2e0
commit f6425de51d
8 changed files with 343 additions and 184 deletions

View File

@@ -22,6 +22,86 @@ defmodule BDS.ProgressReporterTest do
assert_received {0.525, "Rebuilding post files (2/4)"}
end
test "reports counted progress with prefix count message style" do
parent = self()
callback = fn progress, message -> send(parent, {progress, message}) end
assert ProgressReporter.report_count_started(callback, 3, "pages",
verb: "Processing",
start_progress: 0.0,
empty_suffix: "to process",
message_style: :prefix_count
) == :ok
assert ProgressReporter.report_count_progress(callback, 2, 4, "pages",
verb: "Processing",
start_progress: 0.0,
message_style: :prefix_count
) == :ok
assert_progress_received(0.0, "Processing 0/3 pages")
assert_received {0.5, "Processing 2/4 pages"}
end
test "reports counted progress with label message style" do
parent = self()
callback = fn progress, message -> send(parent, {progress, message}) end
assert ProgressReporter.report_count_started(callback, 5, "Repairing metadata",
verb: nil,
start_progress: 0.05,
message_style: :label
) == :ok
assert ProgressReporter.report_count_progress(callback, 3, 5, "Repairing metadata",
verb: nil,
start_progress: 0.05,
message_style: :label
) == :ok
assert_received {0.05, "Repairing metadata (0/5)"}
assert_received {0.62, "Repairing metadata (3/5)"}
end
test "reports counted progress in a subrange" do
parent = self()
callback = fn progress, message -> send(parent, {progress, message}) end
assert ProgressReporter.report_count_progress(callback, 1, 2, "sitemap URLs",
verb: "Collecting",
range: {0.30, 0.49},
message_style: :prefix_count
) == :ok
assert_received {0.395, "Collecting 1/2 sitemap URLs"}
end
test "reports counted progress with verb label count message style" do
parent = self()
callback = fn progress, message -> send(parent, {progress, message}) end
assert ProgressReporter.report_count_progress(callback, 1, 2, "sitemap URLs...",
verb: "Collecting",
range: {0.30, 0.49},
message_style: :verb_label_count
) == :ok
assert_received {0.395, "Collecting sitemap URLs... 1/2"}
end
test "uses configurable empty counted messages" do
parent = self()
callback = fn progress, message -> send(parent, {progress, message}) end
assert ProgressReporter.report_count_started(callback, 0, "posts",
verb: "Reindexing",
empty_suffix: "to reindex",
message_style: :prefix_count
) == :ok
assert_received {1.0, "No posts to reindex"}
end
test "reports empty rebuilds as complete" do
parent = self()
callback = fn progress, message -> send(parent, {progress, message}) end
@@ -52,4 +132,9 @@ defmodule BDS.ProgressReporterTest do
assert_received {0.5, "Halfway"}
end
defp assert_progress_received(expected_progress, expected_message) do
assert_received {progress, ^expected_message}
assert_in_delta progress, expected_progress, 0.000001
end
end