Files
music_library/test/music_library/batch_test.exs
T
Claudio Ortolina 65b2f3e1f2 Update dependencies
ex_slop 0.4.1 => 0.4.2

Introduces a new check around misusing the `length/1` function which
require widespread fixes.
2026-05-25 19:45:33 +03:00

69 lines
1.6 KiB
Elixir

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 Enum.count_until(failed_ids, 3) == 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