Tighten scrobble_activity assertions

Replace 9 `{:ok, _}` sites with specific response-body checks to verify
the context returns the Last.fm API payload and not just the success branch.

Refs #176
This commit is contained in:
Claudio Ortolina
2026-04-19 22:43:14 +01:00
parent cf872cfed0
commit ae036e79fb
+36 -9
View File
@@ -40,12 +40,20 @@ defmodule MusicLibrary.ScrobbleActivityTest do
test "scrobbles all tracks with :started_at" do
started_at = DateTime.utc_now()
assert {:ok, _} = ScrobbleActivity.scrobble_release(@release, :started_at, started_at)
assert {:ok, response} =
ScrobbleActivity.scrobble_release(@release, :started_at, started_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "scrobbles all tracks with :finished_at" do
finished_at = DateTime.utc_now()
assert {:ok, _} = ScrobbleActivity.scrobble_release(@release, :finished_at, finished_at)
assert {:ok, response} =
ScrobbleActivity.scrobble_release(@release, :finished_at, finished_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "returns error when release has zero duration" do
@@ -93,12 +101,20 @@ defmodule MusicLibrary.ScrobbleActivityTest do
test "scrobbles tracks from a specific medium with :started_at" do
started_at = DateTime.utc_now()
assert {:ok, _} = ScrobbleActivity.scrobble_medium(1, @release, :started_at, started_at)
assert {:ok, response} =
ScrobbleActivity.scrobble_medium(1, @release, :started_at, started_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "scrobbles tracks from a specific medium with :finished_at" do
finished_at = DateTime.utc_now()
assert {:ok, _} = ScrobbleActivity.scrobble_medium(1, @release, :finished_at, finished_at)
assert {:ok, response} =
ScrobbleActivity.scrobble_medium(1, @release, :finished_at, finished_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "returns error when medium not found" do
@@ -151,15 +167,19 @@ defmodule MusicLibrary.ScrobbleActivityTest do
test "scrobbles selected tracks with :started_at", %{track_ids: track_ids} do
started_at = DateTime.utc_now()
assert {:ok, _} =
assert {:ok, response} =
ScrobbleActivity.scrobble_tracks(track_ids, @release, :started_at, started_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "scrobbles selected tracks with :finished_at", %{track_ids: track_ids} do
finished_at = DateTime.utc_now()
assert {:ok, _} =
assert {:ok, response} =
ScrobbleActivity.scrobble_tracks(track_ids, @release, :finished_at, finished_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "returns error when no tracks selected" do
@@ -220,7 +240,10 @@ defmodule MusicLibrary.ScrobbleActivityTest do
Req.Test.json(conn, %{"scrobbles" => %{"@attr" => %{"accepted" => 1}}})
end)
assert {:ok, _} = ScrobbleActivity.scrobble_release(@release, :started_at, started_at)
assert {:ok, response} =
ScrobbleActivity.scrobble_release(@release, :started_at, started_at)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "sets album_artist when track artist differs from release artist" do
@@ -248,8 +271,10 @@ defmodule MusicLibrary.ScrobbleActivityTest do
Req.Test.json(conn, %{"scrobbles" => %{"@attr" => %{"accepted" => 1}}})
end)
assert {:ok, _} =
assert {:ok, response} =
ScrobbleActivity.scrobble_release(release, :started_at, ~U[2024-01-01 12:00:00Z])
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
test "does not set album_artist when track artist matches release artist" do
@@ -269,13 +294,15 @@ defmodule MusicLibrary.ScrobbleActivityTest do
Req.Test.json(conn, %{"scrobbles" => %{"@attr" => %{"accepted" => 1}}})
end)
assert {:ok, _} =
assert {:ok, response} =
ScrobbleActivity.scrobble_tracks(
track_ids,
@release,
:started_at,
~U[2024-01-01 12:00:00Z]
)
assert response["scrobbles"]["@attr"]["accepted"] == 1
end
end
end