[Enhancement] Add pagination for a source's media (#190)
* [WIP] added first attempt at pagination component * Hooked up pagination for downloaded media
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
defmodule Pinchflat.Utils.NumberUtilsTest do
|
||||
use ExUnit.Case, async: true
|
||||
|
||||
alias Pinchflat.Utils.NumberUtils
|
||||
|
||||
describe "clamp/3" do
|
||||
test "returns the minimum when the number is less than the minimum" do
|
||||
assert NumberUtils.clamp(1, 2, 3) == 2
|
||||
end
|
||||
|
||||
test "returns the maximum when the number is greater than the maximum" do
|
||||
assert NumberUtils.clamp(4, 2, 3) == 3
|
||||
end
|
||||
|
||||
test "returns the number when it is between the minimum and maximum" do
|
||||
assert NumberUtils.clamp(2, 1, 3) == 2
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
defmodule PinchflatWeb.Sources.MediaItemTableLiveTest do
|
||||
use PinchflatWeb.ConnCase
|
||||
|
||||
import Phoenix.LiveViewTest
|
||||
import Pinchflat.MediaFixtures
|
||||
import Pinchflat.SourcesFixtures
|
||||
|
||||
alias Pinchflat.Sources.MediaItemTableLive
|
||||
|
||||
setup do
|
||||
source = source_fixture()
|
||||
|
||||
{:ok, source: source}
|
||||
end
|
||||
|
||||
describe "initial rendering" do
|
||||
test "shows message when no records", %{conn: conn, source: source} do
|
||||
{:ok, _view, html} = live_isolated(conn, MediaItemTableLive, session: create_session(source))
|
||||
|
||||
assert html =~ "Nothing Here!"
|
||||
refute html =~ "Showing"
|
||||
end
|
||||
|
||||
test "shows records when present", %{conn: conn, source: source} do
|
||||
media_item = media_item_fixture(source_id: source.id, media_filepath: nil)
|
||||
|
||||
{:ok, _view, html} = live_isolated(conn, MediaItemTableLive, session: create_session(source))
|
||||
|
||||
assert html =~ "Showing 1 of 1"
|
||||
assert html =~ "Title"
|
||||
assert html =~ media_item.title
|
||||
end
|
||||
end
|
||||
|
||||
describe "media_state" do
|
||||
test "shows pending media when pending", %{conn: conn, source: source} do
|
||||
downloaded_media_item = media_item_fixture(source_id: source.id)
|
||||
pending_media_item = media_item_fixture(source_id: source.id, media_filepath: nil)
|
||||
|
||||
{:ok, _view, html} = live_isolated(conn, MediaItemTableLive, session: create_session(source, "pending"))
|
||||
|
||||
assert html =~ pending_media_item.title
|
||||
refute html =~ downloaded_media_item.title
|
||||
end
|
||||
|
||||
test "shows downloaded media when downloaded", %{conn: conn, source: source} do
|
||||
downloaded_media_item = media_item_fixture(source_id: source.id)
|
||||
pending_media_item = media_item_fixture(source_id: source.id, media_filepath: nil)
|
||||
|
||||
{:ok, _view, html} = live_isolated(conn, MediaItemTableLive, session: create_session(source, "downloaded"))
|
||||
|
||||
assert html =~ downloaded_media_item.title
|
||||
refute html =~ pending_media_item.title
|
||||
end
|
||||
end
|
||||
|
||||
defp create_session(source, media_state \\ "pending") do
|
||||
%{"source_id" => source.id, "media_state" => media_state}
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user