Add large battery of tests, primarily workers
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user