Simplify import logic and add relevant tests
Import directly redirects to the record - previous version was buggy and worked completely by chance. In addition, this commit adds extensive tests around importing a record via use of mocks.
This commit is contained in:
@@ -33,7 +33,10 @@ defmodule MusicLibraryWeb.RecordLive.ImportComponent do
|
||||
|
||||
defp result(assigns) do
|
||||
~H"""
|
||||
<li class="flex justify-between gap-x-6 py-5 hover:bg-gray-50">
|
||||
<li
|
||||
id={"music_brainz_" <> @release_group.id}
|
||||
class="flex justify-between gap-x-6 py-5 hover:bg-gray-50"
|
||||
>
|
||||
<div class="flex min-w-0 gap-x-4">
|
||||
<div class="min-w-0 flex-auto">
|
||||
<p class="text-sm font-semibold leading-6 text-gray-900">
|
||||
|
||||
@@ -78,10 +78,6 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
||||
{:noreply, stream_insert(socket, :records, record)}
|
||||
end
|
||||
|
||||
def handle_info({__MODULE__, {:saved, record}}, socket) do
|
||||
{:noreply, push_navigate(socket, to: ~p"/records/#{record}")}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_event("delete", %{"id" => id}, socket) do
|
||||
record = Records.get_record!(id)
|
||||
@@ -103,12 +99,10 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
||||
def handle_event("import", %{"id" => musicbrainz_id, "format" => format}, socket) do
|
||||
case Records.import_from_musicbrainz(musicbrainz_id, format: format) do
|
||||
{:ok, record} ->
|
||||
notify_parent({:saved, record})
|
||||
|
||||
{:noreply,
|
||||
socket
|
||||
|> put_flash(:info, "Record imported successfully")
|
||||
|> push_patch(to: ~p"/records")}
|
||||
|> push_navigate(to: ~p"/records/#{record.id}")}
|
||||
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
{:noreply, assign(socket, form: to_form(changeset))}
|
||||
@@ -143,8 +137,6 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
||||
String.to_integer(value)
|
||||
end
|
||||
|
||||
defp notify_parent(msg), do: send(self(), {__MODULE__, msg})
|
||||
|
||||
defp musicbrainz_url(record) do
|
||||
"https://musicbrainz.org/release-group/#{record.musicbrainz_id}"
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user