Reorder record sets via drag and drop
This commit is contained in:
@@ -176,6 +176,26 @@ defmodule MusicLibrary.RecordSetsTest do
|
||||
end
|
||||
end
|
||||
|
||||
describe "reorder_records_in_set/2" do
|
||||
test "reorders records according to the given order" do
|
||||
{set, [r1, r2, r3]} = record_set_with_records(3)
|
||||
|
||||
{:ok, updated} = RecordSets.reorder_records_in_set(set, [r3.id, r1.id, r2.id])
|
||||
|
||||
ids_in_order = Enum.map(updated.items, & &1.record.id)
|
||||
assert ids_in_order == [r3.id, r1.id, r2.id]
|
||||
end
|
||||
|
||||
test "no-ops when order is unchanged" do
|
||||
{set, [r1, r2, r3]} = record_set_with_records(3)
|
||||
|
||||
{:ok, updated} = RecordSets.reorder_records_in_set(set, [r1.id, r2.id, r3.id])
|
||||
|
||||
ids_in_order = Enum.map(updated.items, & &1.record.id)
|
||||
assert ids_in_order == [r1.id, r2.id, r3.id]
|
||||
end
|
||||
end
|
||||
|
||||
describe "move_record_in_set/3" do
|
||||
test "moves a record up" do
|
||||
{set, [r1, r2 | _]} = record_set_with_records(3)
|
||||
|
||||
@@ -119,6 +119,23 @@ defmodule MusicLibraryWeb.RecordSetLive.IndexTest do
|
||||
end
|
||||
end
|
||||
|
||||
describe "Drag-and-drop reorder" do
|
||||
test "reorders records via reorder event", %{conn: conn} do
|
||||
{set, [r1, r2, r3]} = record_set_with_records(3)
|
||||
|
||||
{:ok, view, _html} = live(conn, ~p"/record-sets")
|
||||
|
||||
render_hook(view, "reorder", %{
|
||||
"set_id" => set.id,
|
||||
"record_ids" => [r3.id, r1.id, r2.id]
|
||||
})
|
||||
|
||||
updated = RecordSets.get_record_set!(set.id)
|
||||
ids_in_order = Enum.map(updated.items, & &1.record.id)
|
||||
assert ids_in_order == [r3.id, r1.id, r2.id]
|
||||
end
|
||||
end
|
||||
|
||||
describe "Reorder records" do
|
||||
test "moves a record left (up)", %{conn: conn} do
|
||||
{set, [r1, r2 | _]} = record_set_with_records(3)
|
||||
|
||||
@@ -81,6 +81,20 @@ defmodule MusicLibraryWeb.RecordSetLive.ShowTest do
|
||||
end
|
||||
end
|
||||
|
||||
describe "Drag-and-drop reorder" do
|
||||
test "reorders records via reorder event", %{conn: conn} do
|
||||
{set, [r1, r2, r3]} = record_set_with_records(3)
|
||||
|
||||
{:ok, view, _html} = live(conn, ~p"/record-sets/#{set}")
|
||||
|
||||
render_hook(view, "reorder", %{"record_ids" => [r3.id, r1.id, r2.id]})
|
||||
|
||||
updated = RecordSets.get_record_set!(set.id)
|
||||
ids_in_order = Enum.map(updated.items, & &1.record.id)
|
||||
assert ids_in_order == [r3.id, r1.id, r2.id]
|
||||
end
|
||||
end
|
||||
|
||||
describe "Delete set" do
|
||||
test "deletes set and navigates to index", %{conn: conn} do
|
||||
set = record_set(%{name: "To Delete"})
|
||||
|
||||
Reference in New Issue
Block a user