Extract artist infos fixtures
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
defmodule MusicLibrary.Worker.ApplyScrobbleRulesTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ScrobbledTracksFixtures
|
||||
|
||||
alias LastFm.Track
|
||||
alias MusicLibrary.ScrobbleRules
|
||||
alias MusicLibrary.Worker.ApplyScrobbleRules
|
||||
@@ -34,31 +36,21 @@ defmodule MusicLibrary.Worker.ApplyScrobbleRulesTest do
|
||||
})
|
||||
|
||||
# Create test tracks
|
||||
%Track{}
|
||||
|> Track.changeset(%{
|
||||
scrobbled_at_uts: System.system_time(:second),
|
||||
scrobbled_track_fixture(%{
|
||||
musicbrainz_id: "track-mbid-1",
|
||||
title: "Breathe",
|
||||
cover_url: "http://example.com/cover.jpg",
|
||||
scrobbled_at_label: "01 Jan 2023, 12:00",
|
||||
artist: %{musicbrainz_id: "", name: "Pink Floyd"},
|
||||
album: %{musicbrainz_id: "", title: "Dark Side of the Moon"},
|
||||
last_fm_data: %{}
|
||||
album: %{musicbrainz_id: "", title: "Dark Side of the Moon"}
|
||||
})
|
||||
|> Repo.insert!()
|
||||
|
||||
%Track{}
|
||||
|> Track.changeset(%{
|
||||
scrobbled_track_fixture(%{
|
||||
scrobbled_at_uts: System.system_time(:second) + 1,
|
||||
musicbrainz_id: "track-mbid-2",
|
||||
title: "Money",
|
||||
cover_url: "http://example.com/cover.jpg",
|
||||
scrobbled_at_label: "01 Jan 2023, 12:05",
|
||||
artist: %{musicbrainz_id: "", name: "Pink Floyd"},
|
||||
album: %{musicbrainz_id: "", title: "Wish You Were Here"},
|
||||
last_fm_data: %{}
|
||||
album: %{musicbrainz_id: "", title: "Wish You Were Here"}
|
||||
})
|
||||
|> Repo.insert!()
|
||||
|
||||
# Execute the worker
|
||||
assert :ok = ApplyScrobbleRules.perform(%Oban.Job{args: %{}})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
defmodule MusicLibrary.Worker.ArtistRefreshDiscogsDataTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ArtistInfoFixtures
|
||||
import MusicLibrary.Fixtures.Records
|
||||
|
||||
alias Discogs.Fixtures.Artist, as: ArtistFixture
|
||||
@@ -27,14 +28,10 @@ defmodule MusicLibrary.Worker.ArtistRefreshDiscogsDataTest do
|
||||
end
|
||||
|
||||
test "returns ok when no discogs data is available" do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
artist_info =
|
||||
artist_info_fixture(%{musicbrainz_data: %{"name" => "No Discogs Artist"}})
|
||||
|
||||
Repo.insert!(%Artists.ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "No Discogs Artist"}
|
||||
})
|
||||
|
||||
assert {:ok, _} = perform_job(ArtistRefreshDiscogsData, %{"id" => artist_id})
|
||||
assert {:ok, _} = perform_job(ArtistRefreshDiscogsData, %{"id" => artist_info.id})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
defmodule MusicLibrary.Worker.ArtistRefreshMusicBrainzDataTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ArtistInfoFixtures
|
||||
|
||||
alias MusicBrainz.Fixtures.Artist, as: ArtistFixture
|
||||
alias MusicLibrary.Artists
|
||||
alias MusicLibrary.Artists.ArtistInfo
|
||||
alias MusicLibrary.Worker.ArtistRefreshMusicBrainzData
|
||||
|
||||
setup do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
artist_info =
|
||||
artist_info_fixture(%{musicbrainz_data: %{"name" => "Steven Wilson"}})
|
||||
|
||||
Repo.insert!(%ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "Steven Wilson"}
|
||||
})
|
||||
|
||||
%{artist_id: artist_id}
|
||||
%{artist_id: artist_info.id}
|
||||
end
|
||||
|
||||
describe "perform/1" do
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
defmodule MusicLibrary.Worker.ArtistRefreshWikipediaDataTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ArtistInfoFixtures
|
||||
import MusicLibrary.Fixtures.Records
|
||||
|
||||
alias MusicLibrary.Artists
|
||||
@@ -38,16 +39,12 @@ defmodule MusicLibrary.Worker.ArtistRefreshWikipediaDataTest do
|
||||
end
|
||||
|
||||
test "discards job when no wikidata_id exists in musicbrainz_data" do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
|
||||
Repo.insert!(%Artists.ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "No Wikipedia Artist"}
|
||||
})
|
||||
artist_info =
|
||||
artist_info_fixture(%{musicbrainz_data: %{"name" => "No Wikipedia Artist"}})
|
||||
|
||||
# No wikidata relation in musicbrainz_data → fetch_wikipedia_data returns {:ok, artist_info}
|
||||
# Worker wraps non-error returns with `with`, so it passes through as :ok
|
||||
assert {:ok, _} = perform_job(ArtistRefreshWikipediaData, %{"id" => artist_id})
|
||||
assert {:ok, _} = perform_job(ArtistRefreshWikipediaData, %{"id" => artist_info.id})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
defmodule MusicLibrary.Worker.FetchArtistImageTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ArtistInfoFixtures
|
||||
import MusicLibrary.Fixtures.Records
|
||||
|
||||
alias Discogs.Fixtures.Artist
|
||||
@@ -27,29 +28,25 @@ defmodule MusicLibrary.Worker.FetchArtistImageTest do
|
||||
end
|
||||
|
||||
test "cancels when no discogs data exists" do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
|
||||
Repo.insert!(%Artists.ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "No Image Artist"},
|
||||
discogs_data: nil
|
||||
})
|
||||
artist_info =
|
||||
artist_info_fixture(%{
|
||||
musicbrainz_data: %{"name" => "No Image Artist"},
|
||||
discogs_data: nil
|
||||
})
|
||||
|
||||
assert {:cancel, :no_discogs_data} =
|
||||
perform_job(FetchArtistImage, %{"id" => artist_id})
|
||||
perform_job(FetchArtistImage, %{"id" => artist_info.id})
|
||||
end
|
||||
|
||||
test "cancels when discogs data has no images" do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
|
||||
Repo.insert!(%Artists.ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "No Image Artist"},
|
||||
discogs_data: %{"id" => 12_345, "images" => []}
|
||||
})
|
||||
artist_info =
|
||||
artist_info_fixture(%{
|
||||
musicbrainz_data: %{"name" => "No Image Artist"},
|
||||
discogs_data: %{"id" => 12_345, "images" => []}
|
||||
})
|
||||
|
||||
assert {:cancel, :image_not_found} =
|
||||
perform_job(FetchArtistImage, %{"id" => artist_id})
|
||||
perform_job(FetchArtistImage, %{"id" => artist_info.id})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,20 +1,17 @@
|
||||
defmodule MusicLibrary.Worker.FetchArtistLastFmDataTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ArtistInfoFixtures
|
||||
|
||||
alias MusicLibrary.Artists
|
||||
alias MusicLibrary.Artists.ArtistInfo
|
||||
alias MusicLibrary.Repo
|
||||
alias MusicLibrary.Worker.FetchArtistLastFmData
|
||||
|
||||
setup do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
artist_info =
|
||||
artist_info_fixture(%{musicbrainz_data: %{"name" => "Steven Wilson"}})
|
||||
|
||||
Repo.insert!(%ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "Steven Wilson"}
|
||||
})
|
||||
|
||||
%{artist_id: artist_id}
|
||||
%{artist_id: artist_info.id}
|
||||
end
|
||||
|
||||
describe "perform/1" do
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
defmodule MusicLibrary.Worker.PruneArtistInfoTest do
|
||||
use MusicLibrary.DataCase
|
||||
|
||||
import MusicLibrary.ArtistInfoFixtures
|
||||
import MusicLibrary.Fixtures.Records
|
||||
|
||||
alias MusicLibrary.Artists
|
||||
@@ -18,17 +19,13 @@ defmodule MusicLibrary.Worker.PruneArtistInfoTest do
|
||||
end
|
||||
|
||||
test "deletes artist info when artist is not referenced by any record" do
|
||||
artist_id = Ecto.UUID.generate()
|
||||
artist_info =
|
||||
artist_info_fixture(%{musicbrainz_data: %{"name" => "Orphaned Artist"}})
|
||||
|
||||
Repo.insert!(%Artists.ArtistInfo{
|
||||
id: artist_id,
|
||||
musicbrainz_data: %{"name" => "Orphaned Artist"}
|
||||
})
|
||||
|
||||
assert :ok = perform_job(PruneArtistInfo, %{"id" => artist_id})
|
||||
assert :ok = perform_job(PruneArtistInfo, %{"id" => artist_info.id})
|
||||
|
||||
assert_raise Ecto.NoResultsError, fn ->
|
||||
Artists.get_artist_info!(artist_id)
|
||||
Artists.get_artist_info!(artist_info.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user