summaryrefslogtreecommitdiff
path: root/test/pagination_test.exs
diff options
context:
space:
mode:
authorMaksim Pechnikov <parallel588@gmail.com>2019-09-06 14:01:07 +0300
committerMaksim Pechnikov <parallel588@gmail.com>2019-09-06 14:01:07 +0300
commiteb74c3d5c7a4bebbee43e123661d87e7605a32ba (patch)
tree5a034ddf84ce2fb0bb72501b146df967299c3685 /test/pagination_test.exs
parent6ef0103ca0b194971a2e6f61685316536b742a11 (diff)
parent896ffabe37406e85c2a3c2f30d2e882c68b5831e (diff)
downloadpleroma-eb74c3d5c7a4bebbee43e123661d87e7605a32ba.tar.gz
pleroma-eb74c3d5c7a4bebbee43e123661d87e7605a32ba.zip
Merge branch 'develop' into issue/1218
Diffstat (limited to 'test/pagination_test.exs')
-rw-r--r--test/pagination_test.exs78
1 files changed, 78 insertions, 0 deletions
diff --git a/test/pagination_test.exs b/test/pagination_test.exs
new file mode 100644
index 000000000..c0fbe7933
--- /dev/null
+++ b/test/pagination_test.exs
@@ -0,0 +1,78 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.PaginationTest do
+ use Pleroma.DataCase
+
+ import Pleroma.Factory
+
+ alias Pleroma.Object
+ alias Pleroma.Pagination
+
+ describe "keyset" do
+ setup do
+ notes = insert_list(5, :note)
+
+ %{notes: notes}
+ end
+
+ test "paginates by min_id", %{notes: notes} do
+ id = Enum.at(notes, 2).id |> Integer.to_string()
+
+ %{total: total, items: paginated} =
+ Pagination.fetch_paginated(Object, %{"min_id" => id, "total" => true})
+
+ assert length(paginated) == 2
+ assert total == 5
+ end
+
+ test "paginates by since_id", %{notes: notes} do
+ id = Enum.at(notes, 2).id |> Integer.to_string()
+
+ %{total: total, items: paginated} =
+ Pagination.fetch_paginated(Object, %{"since_id" => id, "total" => true})
+
+ assert length(paginated) == 2
+ assert total == 5
+ end
+
+ test "paginates by max_id", %{notes: notes} do
+ id = Enum.at(notes, 1).id |> Integer.to_string()
+
+ %{total: total, items: paginated} =
+ Pagination.fetch_paginated(Object, %{"max_id" => id, "total" => true})
+
+ assert length(paginated) == 1
+ assert total == 5
+ end
+
+ test "paginates by min_id & limit", %{notes: notes} do
+ id = Enum.at(notes, 2).id |> Integer.to_string()
+
+ paginated = Pagination.fetch_paginated(Object, %{"min_id" => id, "limit" => 1})
+
+ assert length(paginated) == 1
+ end
+ end
+
+ describe "offset" do
+ setup do
+ notes = insert_list(5, :note)
+
+ %{notes: notes}
+ end
+
+ test "paginates by limit" do
+ paginated = Pagination.fetch_paginated(Object, %{"limit" => 2}, :offset)
+
+ assert length(paginated) == 2
+ end
+
+ test "paginates by limit & offset" do
+ paginated = Pagination.fetch_paginated(Object, %{"limit" => 2, "offset" => 4}, :offset)
+
+ assert length(paginated) == 1
+ end
+ end
+end