Match decoded OpenAI error body, not raw JSON

Switch the 500-response stubs to Req.Test.json so Req decodes the
body, then match the map shape. Avoids coupling the assertion to
the exact JSON serialization.

Refs #176
This commit is contained in:
Claudio Ortolina
2026-04-20 06:22:41 +01:00
parent 1429f7a826
commit 0ee0dcb118
2 changed files with 8 additions and 4 deletions
@@ -296,10 +296,12 @@ defmodule MusicLibrary.Records.SimilarityTest do
record = record(%{genres: ["rock"]})
Req.Test.stub(OpenAI.API, fn conn ->
Plug.Conn.send_resp(conn, 500, JSON.encode!(%{"error" => "internal server error"}))
conn
|> Plug.Conn.put_status(500)
|> Req.Test.json(%{"error" => "internal server error"})
end)
assert {:error, "{\"error\":\"internal server error\"}"} =
assert {:error, %{"error" => "internal server error"}} =
Similarity.generate_embedding(record)
end
end
@@ -48,10 +48,12 @@ defmodule MusicLibrary.Worker.GenerateRecordEmbeddingTest do
record = record()
Req.Test.stub(OpenAI.API, fn conn ->
Plug.Conn.send_resp(conn, 500, JSON.encode!(%{"error" => "internal server error"}))
conn
|> Plug.Conn.put_status(500)
|> Req.Test.json(%{"error" => "internal server error"})
end)
assert {:error, "{\"error\":\"internal server error\"}"} =
assert {:error, %{"error" => "internal server error"}} =
perform_job(GenerateRecordEmbedding, %{"record_id" => record.id})
end