diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/support/factory.ex | 4 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 53 | 
2 files changed, 52 insertions, 5 deletions
diff --git a/test/support/factory.ex b/test/support/factory.ex index c751546ce..8f638b98f 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -182,8 +182,8 @@ defmodule Pleroma.Factory do      }    end -  def like_activity_factory do -    note_activity = insert(:note_activity) +  def like_activity_factory(attrs \\ %{}) do +    note_activity = attrs[:note_activity] || insert(:note_activity)      object = Object.normalize(note_activity)      user = insert(:user) diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 40344f17e..251055ee1 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -180,18 +180,65 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    end    describe "/object/:uuid/likes" do -    test "it returns the like activities in a collection", %{conn: conn} do +    setup do        like = insert(:like_activity)        like_object_ap_id = Object.normalize(like).data["id"] -      uuid = String.split(like_object_ap_id, "/") |> List.last() +      uuid = +        like_object_ap_id +        |> String.split("/") +        |> List.last() + +      [id: like.data["id"], uuid: uuid] +    end + +    test "it returns the like activities in a collection", %{conn: conn, id: id, uuid: uuid} do        result =          conn          |> put_req_header("accept", "application/activity+json")          |> get("/objects/#{uuid}/likes")          |> json_response(200) -      assert List.first(result["first"]["orderedItems"])["id"] == like.data["id"] +      assert List.first(result["first"]["orderedItems"])["id"] == id +      assert result["type"] == "OrderedCollection" +      assert result["totalItems"] == 1 +      refute result["first"]["next"] +    end + +    test "it does not crash when page number is exceeded total pages", %{conn: conn, uuid: uuid} do +      result = +        conn +        |> put_req_header("accept", "application/activity+json") +        |> get("/objects/#{uuid}/likes?page=2") +        |> json_response(200) + +      assert result["type"] == "OrderedCollectionPage" +      assert result["totalItems"] == 1 +      refute result["next"] +      assert Enum.empty?(result["orderedItems"]) +    end + +    test "it contains the next key when likes count is more than 10", %{conn: conn} do +      note = insert(:note_activity) +      insert_list(11, :like_activity, note_activity: note) + +      uuid = +        note +        |> Object.normalize() +        |> Map.get(:data) +        |> Map.get("id") +        |> String.split("/") +        |> List.last() + +      result = +        conn +        |> put_req_header("accept", "application/activity+json") +        |> get("/objects/#{uuid}/likes?page=1") +        |> json_response(200) + +      assert result["totalItems"] == 11 +      assert length(result["orderedItems"]) == 10 +      assert result["next"]      end    end  | 
