Move function in MusicBrainz main module
This commit is contained in:
@@ -11,7 +11,7 @@ defmodule MusicBrainz.APIImpl do
|
|||||||
|
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
alias MusicBrainz.ReleaseGroupSearchResult
|
alias MusicBrainz.{ReleaseGroupSearchResult, ReleaseSearchResult}
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Uses the [lookup](https://musicbrainz.org/doc/MusicBrainz_API#Lookups) endpoint with the release group id and include the
|
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"
|
@base_url <> "/release?query=barcode:#{barcode}&fmt=json"
|
||||||
|
|
||||||
with {:ok, result} <- json_get(url, config) do
|
with {:ok, result} <- json_get(url, config) do
|
||||||
{:ok, result["releases"]}
|
{:ok, Enum.map(result["releases"], &ReleaseSearchResult.from_api_response/1)}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -128,17 +128,6 @@ defmodule MusicLibrary.Records do
|
|||||||
end
|
end
|
||||||
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
|
def import_from_musicbrainz_release_group(musicbrainz_id, opts \\ []) do
|
||||||
with format = Keyword.get(opts, :format, "cd"),
|
with format = Keyword.get(opts, :format, "cd"),
|
||||||
purchased_at = Keyword.get(opts, :purchased_at),
|
purchased_at = Keyword.get(opts, :purchased_at),
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do
|
|||||||
|
|
||||||
# TODO: inform when record is already in collection
|
# TODO: inform when record is already in collection
|
||||||
socket =
|
socket =
|
||||||
case Records.search_release_by_barcode(number) do
|
case MusicBrainz.search_release_by_barcode(number) do
|
||||||
{:ok, [best_match_release | _other_releases]} ->
|
{:ok, [best_match_release | _other_releases]} ->
|
||||||
assign(socket, :releases, [best_match_release | socket.assigns.releases])
|
assign(socket, :releases, [best_match_release | socket.assigns.releases])
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
defmodule MusicBrainzTest do
|
defmodule MusicBrainzTest do
|
||||||
use ExUnit.Case, async: true
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
alias MusicBrainz.APIMock
|
alias MusicBrainz.{APIMock, ReleaseSearchResult}
|
||||||
import MusicLibrary.Fixtures.ReleaseGroup
|
import MusicBrainz.Fixtures.Release
|
||||||
|
import MusicBrainz.Fixtures.ReleaseGroup
|
||||||
import Mox
|
import Mox
|
||||||
|
|
||||||
setup :verify_on_exit!
|
setup :verify_on_exit!
|
||||||
@@ -19,4 +20,22 @@ defmodule MusicBrainzTest do
|
|||||||
MusicBrainz.search_release_group("Marillion", limit: 20, offset: 10)
|
MusicBrainz.search_release_group("Marillion", limit: 20, offset: 10)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
defmodule MusicLibrary.Records.RecordTest do
|
defmodule MusicLibrary.Records.RecordTest do
|
||||||
use ExUnit.Case, async: true
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
import MusicLibrary.Fixtures.ReleaseGroup
|
import MusicBrainz.Fixtures.ReleaseGroup
|
||||||
alias MusicLibrary.Records.Record
|
alias MusicLibrary.Records.Record
|
||||||
|
|
||||||
doctest Record
|
doctest Record
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ defmodule MusicLibrary.RecordsTest do
|
|||||||
alias MusicLibrary.Records.SearchIndex
|
alias MusicLibrary.Records.SearchIndex
|
||||||
alias MusicBrainz.APIMock
|
alias MusicBrainz.APIMock
|
||||||
import MusicLibrary.Fixtures.Records
|
import MusicLibrary.Fixtures.Records
|
||||||
import MusicLibrary.Fixtures.ReleaseGroup
|
import MusicBrainz.Fixtures.ReleaseGroup
|
||||||
import MusicBrainz.Fixtures.Release
|
import MusicBrainz.Fixtures.Release
|
||||||
import Mox
|
import Mox
|
||||||
|
|
||||||
@@ -311,22 +311,4 @@ defmodule MusicLibrary.RecordsTest do
|
|||||||
"14A033C9315419E0903B4D74EA6A95D4DC58CC7FE82F6F03BDA5750E7D3A590C"
|
"14A033C9315419E0903B4D74EA6A95D4DC58CC7FE82F6F03BDA5750E7D3A590C"
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
|
|||||||
use MusicLibraryWeb.ConnCase
|
use MusicLibraryWeb.ConnCase
|
||||||
|
|
||||||
import MusicLibrary.Fixtures.Records
|
import MusicLibrary.Fixtures.Records
|
||||||
import MusicLibrary.Fixtures.ReleaseGroup
|
import MusicBrainz.Fixtures.ReleaseGroup
|
||||||
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
|
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
|
||||||
import Mox
|
import Mox
|
||||||
alias MusicLibrary.Records.{Cover, Record}
|
alias MusicLibrary.Records.{Cover, Record}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do
|
|||||||
alias MusicBrainz.APIMock
|
alias MusicBrainz.APIMock
|
||||||
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
|
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
|
||||||
import MusicLibrary.Fixtures.Records
|
import MusicLibrary.Fixtures.Records
|
||||||
import MusicLibrary.Fixtures.ReleaseGroup
|
import MusicBrainz.Fixtures.ReleaseGroup
|
||||||
import MusicBrainz.Fixtures.Release
|
import MusicBrainz.Fixtures.Release
|
||||||
import Mox
|
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"])
|
@fixtures_folder Path.join([File.cwd!(), "test/support/fixtures/music_brainz"])
|
||||||
|
|
||||||
alias MusicBrainz.ReleaseGroupSearchResult
|
alias MusicBrainz.ReleaseGroupSearchResult
|
||||||
@@ -5,7 +5,7 @@ defmodule MusicLibrary.Fixtures.Records do
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
alias MusicLibrary.Records.Record
|
alias MusicLibrary.Records.Record
|
||||||
alias MusicLibrary.Fixtures.ReleaseGroup
|
alias MusicBrainz.Fixtures.ReleaseGroup
|
||||||
|
|
||||||
@genres [
|
@genres [
|
||||||
"progressive rock",
|
"progressive rock",
|
||||||
|
|||||||
Reference in New Issue
Block a user