Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions modules/wikis/lib/api/v3/page_links/page_links_api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def enrich_models_with_wiki_metadata(relation)

PageLinkCollectionRepresenter.new(
enrich_models_with_wiki_metadata(relation).result,
page: params[:offset],
per_page: params[:pageSize],
self_link: api_v3_paths.wiki_page_links,
current_user:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def enrich_models_with_wiki_metadata(relation)

PageLinkCollectionRepresenter.new(
enrich_models_with_wiki_metadata(relation).result,
page: params[:offset],
per_page: params[:pageSize],
self_link: api_v3_paths.work_package_page_links(@work_package.id),
current_user:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,26 @@
let(:elements) { Wikis::PageLink.where(linkable: work_package, provider: internal_wiki).order(id: :desc).all }
end
end

context "when paginated with an offset beyond the first page" do
# Regression test: the offset param used to be silently dropped
# (never forwarded into the collection representer's page: option),
# so every page request rendered page 1 regardless of offset.
let(:all_ids) { Wikis::PageLink.where(linkable: work_package).order(id: :desc).pluck(:id) }

before { get "#{path}?pageSize=2&offset=2" }

it "returns the second page, distinct from the first page" do
expect(last_response).to have_http_status(200)

body = JSON.parse(last_response.body)
expect(body["offset"]).to eq(2)

returned_ids = body["_embedded"]["elements"].pluck("id")
expect(returned_ids).to eq(all_ids[2, 2])
expect(returned_ids).not_to eq(all_ids[0, 2])
end
end
end

describe "GET /api/v3/wiki_page_links" do
Expand Down Expand Up @@ -111,6 +131,32 @@
end
end

context "when paginated with an offset beyond the first page" do
# Regression test, independent of the work-package-scoped endpoint's
# own analogous coverage above -- the same bug existed in this
# global handler too.
let(:all_ids) do
ids = unaccessible_links.pluck(:id) + same_identifier_page_links.pluck(:id)
Wikis::PageLink.where.not(id: ids).order(id: :desc).pluck(:id)
end

before do
unaccessible_links
get "#{path}?pageSize=2&offset=2"
end

it "returns the second page, distinct from the first page" do
expect(last_response).to have_http_status(200)

body = JSON.parse(last_response.body)
expect(body["offset"]).to eq(2)

returned_ids = body["_embedded"]["elements"].pluck("id")
expect(returned_ids).to eq(all_ids[2, 2])
expect(returned_ids).not_to eq(all_ids[0, 2])
end
end

context "when filtered by link type" do
let(:filter) do
[{ wiki_page_link_type:
Expand Down
Loading