Add tests for previously uncovered modules

This commit is contained in:
Claudio Ortolina
2026-04-19 07:47:20 +01:00
parent 1068de3096
commit 22a47f4ca9
4 changed files with 297 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
defmodule MusicLibrary.ErrorIgnorerTest do
use ExUnit.Case, async: true
alias MusicLibrary.ErrorIgnorer
describe "ignore?/2" do
test "ignores Phoenix.Router.NoRouteError" do
error = %ErrorTracker.Error{kind: "Elixir.Phoenix.Router.NoRouteError"}
assert ErrorIgnorer.ignore?(error, %{}) == true
end
test "does not ignore other error kinds" do
error = %ErrorTracker.Error{kind: "Elixir.RuntimeError"}
assert ErrorIgnorer.ignore?(error, %{}) == false
end
test "does not ignore Ecto.NoResultsError" do
error = %ErrorTracker.Error{kind: "Elixir.Ecto.NoResultsError"}
assert ErrorIgnorer.ignore?(error, %{}) == false
end
end
end
@@ -0,0 +1,63 @@
defmodule MusicLibrary.Worker.GenerateRecordEmbeddingTest do
use MusicLibrary.DataCase
import MusicLibrary.Fixtures.Records
alias MusicLibrary.Records
alias MusicLibrary.Records.Similarity
alias MusicLibrary.Worker.GenerateRecordEmbedding
describe "perform/1" do
test "returns :ok and broadcasts update when embedding is generated" do
record = record()
Req.Test.stub(OpenAI.API, fn conn ->
Req.Test.json(conn, %{"data" => [%{"embedding" => [0.1, 0.2, 0.3]}]})
end)
:ok = Records.subscribe(record.id)
assert :ok = perform_job(GenerateRecordEmbedding, %{"record_id" => record.id})
assert_receive {:update, %Records.Record{id: id}}
assert id == record.id
assert {:ok, _text} = Similarity.get_embedding_text(record.id)
end
test "returns :ok without broadcasting when text representation is unchanged" do
record = record()
{:ok, _} =
Similarity.store_embedding(
record.id,
SqliteVec.Float32.new([0.1, 0.2, 0.3]),
Similarity.text_representation(record)
)
:ok = Records.subscribe(record.id)
assert :ok = perform_job(GenerateRecordEmbedding, %{"record_id" => record.id})
refute_receive {:update, _}
end
@tag :capture_log
test "returns {:error, reason} when OpenAI API fails" do
record = record()
Req.Test.stub(OpenAI.API, fn conn ->
Plug.Conn.send_resp(conn, 500, JSON.encode!(%{"error" => "internal server error"}))
end)
assert {:error, _reason} =
perform_job(GenerateRecordEmbedding, %{"record_id" => record.id})
end
test "raises when record does not exist" do
assert_raise Ecto.NoResultsError, fn ->
perform_job(GenerateRecordEmbedding, %{"record_id" => Ecto.UUID.generate()})
end
end
end
end