Files
music_library/test/music_library/wishlist_test.exs
T
2026-03-27 08:38:41 +00:00

64 lines
1.8 KiB
Elixir

defmodule MusicLibrary.WishlistTest do
use MusicLibrary.DataCase
import MusicLibrary.Fixtures.Records
alias MusicLibrary.Wishlist
defp fill_wishlist(_) do
records = [
record(%{purchased_at: nil, title: "Brave"}),
record(%{purchased_at: nil, title: "Brave"}),
record(%{purchased_at: nil}),
record(%{title: "Brave"})
]
%{wishlist: records}
end
describe "search_records/2" do
setup [:fill_wishlist]
test "returns matching records, excluding purchased records" do
assert [%{title: "Brave"}, %{title: "Brave"}] = Wishlist.search_records("brave")
end
test "respects limit" do
assert [%{title: "Brave"}] = Wishlist.search_records("brave", limit: 1)
end
test "respects offset" do
[first_match] = Wishlist.search_records("brave", limit: 1)
[second_match] = Wishlist.search_records("brave", limit: 1, offset: 1)
assert first_match !== second_match
end
end
describe "search_records_count/1" do
setup [:fill_wishlist]
test "returns the count of matching records, excluding purchased records" do
assert 2 = Wishlist.search_records_count("brave")
end
end
describe "search_records/2 with release_year" do
test "filters by release year" do
record(%{purchased_at: nil, title: "Album 1994", release_date: "1994-09-13"})
record(%{purchased_at: nil, title: "Album 2020", release_date: "2020"})
assert [%{title: "Album 1994"}] = Wishlist.search_records("release_year:1994")
assert [%{title: "Album 2020"}] = Wishlist.search_records("release_year:2020")
assert [] = Wishlist.search_records("release_year:2000")
end
end
describe "count/0" do
setup [:fill_wishlist]
test "returns the count of records in the wishlist, excluding purchased records" do
assert 3 = Wishlist.count()
end
end
end