diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/views/user_view.ex | 3 | ||||
| -rw-r--r-- | test/web/activity_pub/views/user_view_test.exs | 23 | 
2 files changed, 25 insertions, 1 deletions
| diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 164b973d0..a2f73e140 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -227,11 +227,12 @@ defmodule Pleroma.Web.ActivityPub.UserView do      activities = ActivityPub.fetch_user_activities(user, nil, params) +    # this is sorted chronologically, so first activity is the newest (max)      {max_id, min_id, collection} =        if length(activities) > 0 do          { -          Enum.at(Enum.reverse(activities), 0).id,            Enum.at(activities, 0).id, +          Enum.at(Enum.reverse(activities), 0).id,            Enum.map(activities, fn act ->              {:ok, data} = Transmogrifier.prepare_outgoing(act.data)              data diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 2b4a04afd..eda95e3ea 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -142,4 +142,27 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do        assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user})      end    end + +  test "outbox paginates correctly" do +    user = insert(:user) + +    posts = +      for i <- 0..25 do +        {:ok, activity} = CommonAPI.post(user, %{"status" => "post #{i}"}) +        activity +      end + +    # outbox sorts chronologically, newest first, with ten per page +    posts = Enum.reverse(posts) + +    %{"first" => %{"next" => next_url}} = +      UserView.render("outbox.json", %{user: user, max_id: nil}) + +    next_id = Enum.at(posts, 9).id +    assert next_url =~ next_id + +    %{"next" => next_url} = UserView.render("outbox.json", %{user: user, max_id: next_id}) +    next_id = Enum.at(posts, 19).id +    assert next_url =~ next_id +  end  end | 
