Move function in MusicBrainz main module

This commit is contained in:
Claudio Ortolina
2025-02-17 22:07:49 +00:00
parent e218b06350
commit 94a2784020
10 changed files with 30 additions and 40 deletions
+2 -2
View File
@@ -11,7 +11,7 @@ defmodule MusicBrainz.APIImpl do
require Logger
alias MusicBrainz.ReleaseGroupSearchResult
alias MusicBrainz.{ReleaseGroupSearchResult, ReleaseSearchResult}
@doc """
Uses the [lookup](https://musicbrainz.org/doc/MusicBrainz_API#Lookups) endpoint with the release group id and include the
@@ -311,7 +311,7 @@ defmodule MusicBrainz.APIImpl do
@base_url <> "/release?query=barcode:#{barcode}&fmt=json"
with {:ok, result} <- json_get(url, config) do
{:ok, result["releases"]}
{:ok, Enum.map(result["releases"], &ReleaseSearchResult.from_api_response/1)}
end
end
-11
View File
@@ -128,17 +128,6 @@ defmodule MusicLibrary.Records do
end
end
def search_release_by_barcode(barcode) do
case MusicBrainz.search_release_by_barcode(barcode) do
{:ok, releases} ->
{:ok,
Enum.map(releases, fn r -> MusicBrainz.ReleaseSearchResult.from_api_response(r) end)}
error ->
error
end
end
def import_from_musicbrainz_release_group(musicbrainz_id, opts \\ []) do
with format = Keyword.get(opts, :format, "cd"),
purchased_at = Keyword.get(opts, :purchased_at),
@@ -120,7 +120,7 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do
# TODO: inform when record is already in collection
socket =
case Records.search_release_by_barcode(number) do
case MusicBrainz.search_release_by_barcode(number) do
{:ok, [best_match_release | _other_releases]} ->
assign(socket, :releases, [best_match_release | socket.assigns.releases])
+21 -2
View File
@@ -1,8 +1,9 @@
defmodule MusicBrainzTest do
use ExUnit.Case, async: true
alias MusicBrainz.APIMock
import MusicLibrary.Fixtures.ReleaseGroup
alias MusicBrainz.{APIMock, ReleaseSearchResult}
import MusicBrainz.Fixtures.Release
import MusicBrainz.Fixtures.ReleaseGroup
import Mox
setup :verify_on_exit!
@@ -19,4 +20,22 @@ defmodule MusicBrainzTest do
MusicBrainz.search_release_group("Marillion", limit: 20, offset: 10)
end
end
describe "search_release_by_barcode/1" do
test "it returns releases belonging to the same release group" do
barcode = "5052205070023"
releases = releases(:queen_greatest_hits)
expect(APIMock, :search_release_by_barcode, fn ^barcode, _config ->
{:ok, Enum.map(releases, &ReleaseSearchResult.from_api_response/1)}
end)
assert {:ok, results} = MusicBrainz.search_release_by_barcode(barcode)
assert Enum.all?(results, fn result ->
result.release_group.id == "69ce61c8-127f-3809-95d8-62fdf3ae1347" &&
result.release_group.title == "Greatest Hits"
end)
end
end
end
+1 -1
View File
@@ -1,7 +1,7 @@
defmodule MusicLibrary.Records.RecordTest do
use ExUnit.Case, async: true
import MusicLibrary.Fixtures.ReleaseGroup
import MusicBrainz.Fixtures.ReleaseGroup
alias MusicLibrary.Records.Record
doctest Record
+1 -19
View File
@@ -5,7 +5,7 @@ defmodule MusicLibrary.RecordsTest do
alias MusicLibrary.Records.SearchIndex
alias MusicBrainz.APIMock
import MusicLibrary.Fixtures.Records
import MusicLibrary.Fixtures.ReleaseGroup
import MusicBrainz.Fixtures.ReleaseGroup
import MusicBrainz.Fixtures.Release
import Mox
@@ -311,22 +311,4 @@ defmodule MusicLibrary.RecordsTest do
"14A033C9315419E0903B4D74EA6A95D4DC58CC7FE82F6F03BDA5750E7D3A590C"
end
end
describe "search_release_by_barcode/1" do
test "it returns releases belonging to the same release group" do
barcode = "5052205070023"
releases = releases(:queen_greatest_hits)
expect(APIMock, :search_release_by_barcode, fn ^barcode, _config ->
{:ok, releases}
end)
assert {:ok, results} = Records.search_release_by_barcode(barcode)
assert Enum.all?(results, fn result ->
result.release_group.id == "69ce61c8-127f-3809-95d8-62fdf3ae1347" &&
result.release_group.title == "Greatest Hits"
end)
end
end
end
@@ -2,7 +2,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
use MusicLibraryWeb.ConnCase
import MusicLibrary.Fixtures.Records
import MusicLibrary.Fixtures.ReleaseGroup
import MusicBrainz.Fixtures.ReleaseGroup
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
import Mox
alias MusicLibrary.Records.{Cover, Record}
@@ -5,7 +5,7 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do
alias MusicBrainz.APIMock
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
import MusicLibrary.Fixtures.Records
import MusicLibrary.Fixtures.ReleaseGroup
import MusicBrainz.Fixtures.ReleaseGroup
import MusicBrainz.Fixtures.Release
import Mox
@@ -1,4 +1,4 @@
defmodule MusicLibrary.Fixtures.ReleaseGroup do
defmodule MusicBrainz.Fixtures.ReleaseGroup do
@fixtures_folder Path.join([File.cwd!(), "test/support/fixtures/music_brainz"])
alias MusicBrainz.ReleaseGroupSearchResult
@@ -5,7 +5,7 @@ defmodule MusicLibrary.Fixtures.Records do
"""
alias MusicLibrary.Records.Record
alias MusicLibrary.Fixtures.ReleaseGroup
alias MusicBrainz.Fixtures.ReleaseGroup
@genres [
"progressive rock",