diff --git a/lib/music_library/worker/fetch_artist_info.ex b/lib/music_library/worker/fetch_artist_info.ex index 275d8e2d..006b59b5 100644 --- a/lib/music_library/worker/fetch_artist_info.ex +++ b/lib/music_library/worker/fetch_artist_info.ex @@ -9,6 +9,9 @@ defmodule MusicLibrary.Worker.FetchArtistInfo do # refresh_lastfm_data returns {:ok, _} even on API errors, so it won't block embeddings MusicLibrary.Artists.refresh_lastfm_data(artist_id) MusicLibrary.Records.regenerate_artist_embeddings(artist_id) + else + {:error, :no_english_wikipedia} -> {:discard, :no_english_wikipedia} + error -> error end end end diff --git a/test/music_library/worker/fetch_artist_info_test.exs b/test/music_library/worker/fetch_artist_info_test.exs index 5439e498..3906e370 100644 --- a/test/music_library/worker/fetch_artist_info_test.exs +++ b/test/music_library/worker/fetch_artist_info_test.exs @@ -10,6 +10,41 @@ defmodule MusicLibrary.Worker.FetchArtistInfoTest do @steven_wilson_mbid "3a51b862-0144-40f6-aa17-6aaeefea29d9" describe "perform/1" do + test "discards when artist has no English Wikipedia page" do + _record = + record(%{ + artists: [ + %{ + name: "Steven Wilson", + musicbrainz_id: @steven_wilson_mbid, + sort_name: "Wilson, Steven", + joinphrase: "" + } + ] + }) + + Req.Test.stub(MusicBrainz.API, fn conn -> + Req.Test.json(conn, MusicBrainz.Fixtures.Artist.get_artist()) + end) + + Req.Test.stub(Discogs.API, fn conn -> + case conn.request_path do + "/artists/" <> _ -> + Req.Test.json(conn, Discogs.Fixtures.Artist.get_artist()) + + _ -> + Plug.Conn.send_resp(conn, 200, Discogs.Fixtures.Artist.image_data()) + end + end) + + Req.Test.stub(Wikipedia.API, fn conn -> + Req.Test.json(conn, Wikipedia.Fixtures.wikidata_response_no_enwiki()) + end) + + assert {:discard, :no_english_wikipedia} = + perform_job(FetchArtistInfo, %{"id" => @steven_wilson_mbid}) + end + test "fetches and stores artist info from all sources" do # Create a record with the artist musicbrainz_id matching the fixture _record =