diff --git a/test/music_library/records_test.exs b/test/music_library/records_test.exs index f82cefb0..349b71c3 100644 --- a/test/music_library/records_test.exs +++ b/test/music_library/records_test.exs @@ -17,7 +17,8 @@ defmodule MusicLibrary.RecordsTest do %{records: records} end - # using record ids as records contain autogenerated fields which are not loaded when the record is created + # when searching we do not return all record fields (e.g. cover data) + # so we rely on record ids to compare results defp search(query, limit, offset) do Record |> Records.search_records(query, limit: limit, offset: offset) @@ -60,4 +61,39 @@ defmodule MusicLibrary.RecordsTest do assert [libertad.id] == search("mbid:#{airbag_au_mbid}", 10, 0) end end + + describe "search_records_count/2" do + setup [:create_records] + + test "untagged search" do + assert 2 == Records.search_records_count(Record, "brave") + end + + test "tagged search - album" do + assert 1 == Records.search_records_count(Record, ~s(album:"Brave \(Live\)")) + end + + test "tagged search - artist" do + assert 2 == Records.search_records_count(Record, "artist:airbag") + assert 1 == Records.search_records_count(Record, ~s(artist:"airbag \(AU\)")) + end + + test "tagged search - format" do + assert 1 == Records.search_records_count(Record, "brave format:cd") + end + + test "tagged search - type" do + assert 1 == Records.search_records_count(Record, "brave type:live") + end + + test "tagged search - mbid", %{records: [_, _, _, greatest_show_on_earth, libertad]} do + [airbag_mbid] = Enum.map(greatest_show_on_earth.artists, fn a -> a.musicbrainz_id end) + [airbag_au_mbid] = Enum.map(libertad.artists, fn a -> a.musicbrainz_id end) + + assert 1 == + Records.search_records_count(Record, "mbid:#{airbag_mbid}") + + assert 1 == Records.search_records_count(Record, "mbid:#{airbag_au_mbid}") + end + end end