Skip to content

Commit 136b943

Browse files
committed
Kaminari's page_method_name does not always apply to Kaminari::PaginatableArray, allow fallback to page
The change in Kaminari looks causing this behavior: kaminari/kaminari@653143b Closes #3170
1 parent c38b76d commit 136b943

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/rails_admin/extensions/paper_trail/auditing_adapter.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,10 @@ def listing_for_model_or_object(model, object, query, sort, sort_reverse, all, p
119119
versions = versions.order(sort_reverse == 'true' ? "#{sort} DESC" : sort)
120120
versions = all ? versions : versions.send(Kaminari.config.page_method_name, current_page).per(per_page)
121121
paginated_proxies = Kaminari.paginate_array([], total_count: versions.try(:total_count) || versions.count)
122-
paginated_proxies = paginated_proxies.send(Kaminari.config.page_method_name, current_page).per(per_page)
122+
paginated_proxies = paginated_proxies.send(
123+
paginated_proxies.respond_to?(Kaminari.config.page_method_name) ? Kaminari.config.page_method_name : :page,
124+
current_page,
125+
).per(per_page)
123126
versions.each do |version|
124127
paginated_proxies << VersionProxy.new(version, @user_class)
125128
end

spec/integration/history/rails_admin_paper_trail_spec.rb

+9
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,15 @@
135135
@adapter.listing_for_model @model, nil, false, false, false, nil
136136
@adapter.listing_for_object @model, @paper_trail_test, nil, false, false, false, nil
137137
end
138+
139+
it "does not break when Kaminari's page_method_name is not applied to Kaminari::PaginatableArray" do
140+
expect(PaperTrail::Version).to receive(:per_page_kaminari).twice.and_return(@padinated_listing)
141+
allow(Kaminari).to receive(:paginate_array).and_return(paginated_array)
142+
allow(paginated_array).to receive(:respond_to).with(:per_page_kaminari).and_return(false)
143+
expect(paginated_array).to receive(:page).twice.and_return(paginated_array)
144+
@adapter.listing_for_model @model, nil, false, false, false, nil
145+
@adapter.listing_for_object @model, @paper_trail_test, nil, false, false, false, nil
146+
end
138147
end
139148
end
140149
end

0 commit comments

Comments
 (0)