aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-06-20 10:56:28 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-06-20 10:56:28 +0300
commit1a704e1f1e0acb73cbfb49acc4f614dd01799c46 (patch)
tree659b0bc49b4501d12d7b99c185522d50d07af30e
parent02ca8a363f738ece7b605940690f6a538f6c2fa8 (diff)
downloadpleroma-1a704e1f1e0acb73cbfb49acc4f614dd01799c46.tar.gz
fix for packs pagination
-rw-r--r--lib/pleroma/emoji/pack.ex6
-rw-r--r--test/web/pleroma_api/controllers/emoji_pack_controller_test.exs20
2 files changed, 20 insertions, 6 deletions
diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex
index 2dca21c93..787ff8141 100644
--- a/lib/pleroma/emoji/pack.ex
+++ b/lib/pleroma/emoji/pack.ex
@@ -32,8 +32,8 @@ defmodule Pleroma.Emoji.Pack do
defp paginate(entities, page, page_size) do
entities
- |> Enum.take(page * page_size)
- |> Enum.take(-page_size)
+ |> Enum.chunk_every(page_size)
+ |> Enum.at(page - 1)
end
@spec show(keyword()) :: {:ok, t()} | {:error, atom()}
@@ -470,7 +470,7 @@ defmodule Pleroma.Emoji.Pack do
# with the API so it should be sufficient
with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_path)},
{:ls, {:ok, results}} <- {:ls, File.ls(emoji_path)} do
- {:ok, results}
+ {:ok, Enum.sort(results)}
else
{:create_dir, {:error, e}} -> {:error, :create_dir, e}
{:ls, {:error, e}} -> {:error, :ls, e}
diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs
index 91312c832..df58a5eb6 100644
--- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs
+++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs
@@ -31,6 +31,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200)
assert resp["count"] == 3
+
+ assert resp["packs"]
+ |> Map.keys()
+ |> length() == 3
+
shared = resp["packs"]["test_pack"]
assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"}
assert Map.has_key?(shared["pack"], "download-sha256")
@@ -47,7 +52,12 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
|> json_response_and_validate_schema(200)
assert resp["count"] == 3
- [pack1] = Map.keys(resp["packs"])
+
+ packs = Map.keys(resp["packs"])
+
+ assert length(packs) == 1
+
+ [pack1] = packs
resp =
conn
@@ -55,7 +65,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
|> json_response_and_validate_schema(200)
assert resp["count"] == 3
- [pack2] = Map.keys(resp["packs"])
+ packs = Map.keys(resp["packs"])
+ assert length(packs) == 1
+ [pack2] = packs
resp =
conn
@@ -63,7 +75,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
|> json_response_and_validate_schema(200)
assert resp["count"] == 3
- [pack3] = Map.keys(resp["packs"])
+ packs = Map.keys(resp["packs"])
+ assert length(packs) == 1
+ [pack3] = packs
assert [pack1, pack2, pack3] |> Enum.uniq() |> length() == 3
end