{@artist.name}
+ <.country_flag country={@country} />
diff --git a/mix.exs b/mix.exs
index 4a20a6a4..cfde288d 100644
--- a/mix.exs
+++ b/mix.exs
@@ -63,6 +63,7 @@ defmodule MusicLibrary.MixProject do
compile: false,
depth: 1},
{:fluxon, "~> 1.1.0", repo: :fluxon},
+ {:flagmojis, "~> 1.0"},
# Dev tooling
{:phoenix_live_reload, "~> 1.2", only: :dev},
diff --git a/mix.lock b/mix.lock
index 246bc16f..aaf3e237 100644
--- a/mix.lock
+++ b/mix.lock
@@ -20,6 +20,7 @@
"fast_html": {:hex, :fast_html, "2.4.1", "73142526cee294b0ec8cf122483f32c861e4a9d988c60cd04f63ce7fd9e5a620", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "767a63ecc941d3fc0e0e9609ded1a5e798398e5b1bf4d2f47bcb5992a86b32cf"},
"file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"},
"finch": {:hex, :finch, "0.19.0", "c644641491ea854fc5c1bbaef36bfc764e3f08e7185e1f084e35e0672241b76d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc5324ce209125d1e2fa0fcd2634601c52a787aff1cd33ee833664a5af4ea2b6"},
+ "flagmojis": {:hex, :flagmojis, "1.0.0", "d2b411d9d2c150180103a4d605ee394cabc23c2b6ddf7a0011a9a55a23575281", [:mix], [], "hexpm", "9d9916575cf9dcbe6f0199b410994bec9d19d47971f70089eb7f210f823cd293"},
"floki": {:hex, :floki, "0.37.1", "d7aaee758c8a5b4a7495799a4260754fec5530d95b9c383c03b27359dea117cf", [:mix], [], "hexpm", "673d040cb594d31318d514590246b6dd587ed341d3b67e17c1c0eb8ce7ca6f04"},
"fluxon": {:hex, :fluxon, "1.1.1", "79195863f5d62362cb296c6fe8c5ec739f0766f90a4e5d2fda7665d492f575b5", [:mix], [{:phoenix_live_view, ">= 1.0.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "fluxon", "b49d4a8688a32650f90c363fc8f5cedae36d1d4be023b380068bde1a3043b9ce"},
"gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"},
diff --git a/test/music_library_web/live/artist_live/show_test.exs b/test/music_library_web/live/artist_live/show_test.exs
index b12f7e86..6433c8e2 100644
--- a/test/music_library_web/live/artist_live/show_test.exs
+++ b/test/music_library_web/live/artist_live/show_test.exs
@@ -13,7 +13,13 @@ defmodule MusicLibraryWeb.ArtistLive.ShowTest do
[artist] = collection_record.artists
- %{collection_record: collection_record, artist_musicbrainz_id: artist.musicbrainz_id}
+ artist_info = artist_info(artist.musicbrainz_id)
+
+ %{
+ collection_record: collection_record,
+ artist_musicbrainz_id: artist.musicbrainz_id,
+ artist_info: artist_info
+ }
end
describe "Show artist" do
@@ -64,6 +70,27 @@ defmodule MusicLibraryWeb.ArtistLive.ShowTest do
|> assert_has("div", text: "Error loading biography")
end
+ test "it shows the artist country", %{
+ conn: conn,
+ artist_musicbrainz_id: artist_musicbrainz_id
+ } do
+ Req.Test.stub(LastFm.API, fn conn ->
+ case Map.get(conn.params, "method") do
+ "artist.getInfo" ->
+ Req.Test.json(conn, Fixtures.Artist.get_info())
+
+ "artist.getSimilar" ->
+ Req.Test.json(conn, Fixtures.Artist.get_similar_artists())
+ end
+ end)
+
+ conn
+ |> visit(~p"/artists/#{artist_musicbrainz_id}")
+ |> unwrap(&render_async/1)
+ |> assert_has("span", text: "United Kingdom")
+ |> assert_has("span", text: "🇬🇧")
+ end
+
test "it shows records from the collection and the wishlist", %{
conn: conn,
collection_record: collection_record,
diff --git a/test/support/fixtures/discogs/artist.ex b/test/support/fixtures/discogs/artist.ex
index 2e65d80b..2fe451ca 100644
--- a/test/support/fixtures/discogs/artist.ex
+++ b/test/support/fixtures/discogs/artist.ex
@@ -6,4 +6,11 @@ defmodule Discogs.Fixtures.Artist do
|> File.read!()
|> JSON.decode!()
end
+
+ def image_data do
+ Path.join([@fixtures_folder, "steven wilson.jpeg"])
+ |> File.read!()
+ end
+
+ def image_width, do: 225
end
diff --git a/test/support/fixtures/discogs/steven wilson.jpeg b/test/support/fixtures/discogs/steven wilson.jpeg
new file mode 100644
index 00000000..13404145
Binary files /dev/null and b/test/support/fixtures/discogs/steven wilson.jpeg differ
diff --git a/test/support/fixtures/music_library/records.ex b/test/support/fixtures/music_library/records.ex
index 31384026..01215daf 100644
--- a/test/support/fixtures/music_library/records.ex
+++ b/test/support/fixtures/music_library/records.ex
@@ -75,6 +75,21 @@ defmodule MusicLibrary.Fixtures.Records do
record
end
+ def artist_info(musicbrainz_id, attrs \\ %{}) do
+ {:ok, artist_info} =
+ attrs
+ |> Enum.into(%{
+ id: musicbrainz_id,
+ musicbrainz_data: MusicBrainz.Fixtures.Artist.get_artist(),
+ discogs_data: Discogs.Fixtures.Artist.get_artist(),
+ image_data: Discogs.Fixtures.Artist.image_data(),
+ image_width: Discogs.Fixtures.Artist.image_width()
+ })
+ |> MusicLibrary.Artists.create_artist_info()
+
+ artist_info
+ end
+
def record_with_artist(artist_name, record_attrs \\ %{}) do
record_attrs
|> Map.put(:artists, [artist_attrs(artist_name)])