Add tests for previously uncovered modules
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user