[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:
Kieran
2024-04-17 10:22:55 -07:00
committed by GitHub
parent a4d5f45edc
commit aea40a3f92
7 changed files with 247 additions and 72 deletions
@@ -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