Improve tests: better assertions, meaningful tests

Track resulting principles in project conventions
This commit is contained in:
Claudio Ortolina
2026-03-27 15:46:31 +00:00
parent 6e96bd019f
commit 96836ae715
19 changed files with 91 additions and 140 deletions
@@ -9,13 +9,12 @@ defmodule MusicLibrary.Worker.ArtistRefreshAllDiscogsDataTest do
test "enqueues refresh jobs for all artist infos" do
record = record()
artist = hd(record.artists)
_artist_info = artist_info(artist.musicbrainz_id)
artist_info = artist_info(artist.musicbrainz_id)
assert {:ok, []} = perform_job(ArtistRefreshAllDiscogsData, %{})
end
test "succeeds with no artist infos" do
assert {:ok, []} = perform_job(ArtistRefreshAllDiscogsData, %{})
assert_enqueued worker: MusicLibrary.Worker.ArtistRefreshDiscogsData,
args: %{id: artist_info.id}
end
end
end
@@ -9,13 +9,12 @@ defmodule MusicLibrary.Worker.ArtistRefreshAllMusicBrainzDataTest do
test "enqueues refresh jobs for all artist infos" do
record = record()
artist = hd(record.artists)
_artist_info = artist_info(artist.musicbrainz_id)
artist_info = artist_info(artist.musicbrainz_id)
assert {:ok, []} = perform_job(ArtistRefreshAllMusicBrainzData, %{})
end
test "succeeds with no artist infos" do
assert {:ok, []} = perform_job(ArtistRefreshAllMusicBrainzData, %{})
assert_enqueued worker: MusicLibrary.Worker.ArtistRefreshMusicBrainzData,
args: %{id: artist_info.id}
end
end
end
@@ -9,13 +9,12 @@ defmodule MusicLibrary.Worker.ArtistRefreshAllWikipediaDataTest do
test "enqueues refresh jobs for all artist infos" do
record = record()
artist = hd(record.artists)
_artist_info = artist_info(artist.musicbrainz_id)
artist_info = artist_info(artist.musicbrainz_id)
assert {:ok, []} = perform_job(ArtistRefreshAllWikipediaData, %{})
end
test "succeeds with no artist infos" do
assert {:ok, []} = perform_job(ArtistRefreshAllWikipediaData, %{})
assert_enqueued worker: MusicLibrary.Worker.ArtistRefreshWikipediaData,
args: %{id: artist_info.id}
end
end
end
@@ -24,7 +24,7 @@ defmodule MusicLibrary.Worker.ArtistRefreshDiscogsDataTest do
assert {:ok, _} = perform_job(ArtistRefreshDiscogsData, %{"id" => artist_info.id})
updated = Artists.get_artist_info!(artist_info.id)
assert updated.discogs_data != nil
assert updated.discogs_data == ArtistFixture.get_artist()
end
test "returns ok when no discogs data is available" do
@@ -34,8 +34,8 @@ defmodule MusicLibrary.Worker.ArtistRefreshWikipediaDataTest do
assert {:ok, _} = perform_job(ArtistRefreshWikipediaData, %{"id" => artist_info.id})
updated = Artists.get_artist_info!(artist_info.id)
assert updated.wikipedia_data != nil
assert updated.wikipedia_data != %{}
assert is_map(updated.wikipedia_data)
assert Map.has_key?(updated.wikipedia_data, "intro_html")
end
test "discards job when no wikidata_id exists in musicbrainz_data" do
@@ -24,7 +24,8 @@ defmodule MusicLibrary.Worker.FetchArtistImageTest do
assert :ok = perform_job(FetchArtistImage, %{"id" => artist_info.id})
updated = Artists.get_artist_info!(artist_info.id)
assert updated.image_data_hash != nil
assert is_binary(updated.image_data_hash) and byte_size(updated.image_data_hash) > 0
assert MusicLibrary.Assets.get(updated.image_data_hash) != nil
end
test "cancels when no discogs data exists" do
@@ -7,13 +7,12 @@ defmodule MusicLibrary.Worker.RecordGenerateAllEmbeddingsTest do
describe "perform/1" do
test "enqueues embedding generation jobs for all records" do
_record = record()
record = record()
assert {:ok, []} = perform_job(RecordGenerateAllEmbeddings, %{})
end
test "succeeds with no records" do
assert {:ok, []} = perform_job(RecordGenerateAllEmbeddings, %{})
assert_enqueued worker: MusicLibrary.Worker.GenerateRecordEmbedding,
args: %{record_id: record.id}
end
end
end
@@ -7,13 +7,12 @@ defmodule MusicLibrary.Worker.RecordRefreshAllMusicBrainzDataTest do
describe "perform/1" do
test "enqueues refresh jobs for all records" do
_record = record()
record = record()
assert {:ok, []} = perform_job(RecordRefreshAllMusicBrainzData, %{})
end
test "succeeds with no records" do
assert {:ok, []} = perform_job(RecordRefreshAllMusicBrainzData, %{})
assert_enqueued worker: MusicLibrary.Worker.RecordRefreshMusicBrainzData,
args: %{id: record.id}
end
end
end
@@ -24,7 +24,7 @@ defmodule MusicLibrary.Worker.RecordRefreshMusicBrainzDataTest do
assert :ok = perform_job(RecordRefreshMusicBrainzData, %{"id" => record.id})
updated = Records.get_record!(record.id)
assert updated.musicbrainz_data != nil
assert updated.musicbrainz_data["title"] == "Marbles"
end
test "raises when record does not exist" do
@@ -18,8 +18,10 @@ defmodule MusicLibrary.Worker.RefreshCoverTest do
assert :ok = perform_job(RefreshCover, %{"id" => record.id})
updated = Records.get_record!(record.id)
assert updated.cover_hash != nil
assert Assets.get(updated.cover_hash) != nil
assert is_binary(updated.cover_hash) and byte_size(updated.cover_hash) > 0
asset = Assets.get(updated.cover_hash)
assert asset.format == "image/jpeg"
end
test "raises when record does not exist" do
@@ -1,11 +0,0 @@
defmodule MusicLibrary.Worker.RepoOptimizeTest do
use MusicLibrary.DataCase
alias MusicLibrary.Worker.RepoOptimize
describe "perform/1" do
test "runs optimize on the repo" do
assert {:ok, %Exqlite.Result{}} = perform_job(RepoOptimize, %{})
end
end
end