Move function in MusicBrainz main module
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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])
|
||||
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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
-1
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user