Add large battery of tests, primarily workers

This commit is contained in:
Claudio Ortolina
2026-03-01 17:03:36 +00:00
parent 50da389bf9
commit 854e293902
26 changed files with 853 additions and 1 deletions
+68
View File
@@ -0,0 +1,68 @@
defmodule MusicLibrary.BatchTest do
use MusicLibrary.DataCase
import MusicLibrary.Fixtures.Records
alias MusicLibrary.Batch
alias MusicLibrary.Records.Record
describe "run_on_all/3" do
test "processes all records and returns empty list on success" do
_r1 = record()
_r2 = record()
assert {:ok, []} =
Batch.run_on_all(Record, "record", fn _record ->
:ok
end)
end
@tag :capture_log
test "collects failed record IDs" do
r1 = record()
r2 = record()
assert {:ok, failed_ids} =
Batch.run_on_all(Record, "record", fn _record ->
{:error, :test_failure}
end)
assert length(failed_ids) == 2
assert r1.id in failed_ids
assert r2.id in failed_ids
end
@tag :capture_log
test "handles mixed success and failure" do
r1 = record()
_r2 = record()
assert {:ok, failed_ids} =
Batch.run_on_all(Record, "record", fn record ->
if record.id == r1.id do
{:error, :test_failure}
else
:ok
end
end)
assert failed_ids == [r1.id]
end
test "works with empty table" do
assert {:ok, []} =
Batch.run_on_all(Record, "record", fn _record ->
:ok
end)
end
test "accepts {:ok, result} as success" do
_r1 = record()
assert {:ok, []} =
Batch.run_on_all(Record, "record", fn _record ->
{:ok, :updated}
end)
end
end
end