fix for packs pagination
authorAlexander Strizhakov <alex.strizhakov@gmail.com>
Sat, 20 Jun 2020 07:56:28 +0000 (10:56 +0300)
committerAlexander Strizhakov <alex.strizhakov@gmail.com>
Sat, 20 Jun 2020 07:56:28 +0000 (10:56 +0300)
lib/pleroma/emoji/pack.ex
test/web/pleroma_api/controllers/emoji_pack_controller_test.exs

index 2dca21c93c346e363da7e38fe2913c79fe6f847e..787ff8141772f3738cb7c041ce789a1ff6d82ad1 100644 (file)
@@ -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}
index 91312c832924bac76fd3634bec44dfd0e7b51592..df58a5eb63a92ee796c95b12cf38e13649619bfc 100644 (file)
@@ -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