1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe StrongPaginationParams, feature_category: :tooling do
let(:controller_class) do
# rubocop:disable Rails/ApplicationController -- needed to isolate the concern
Class.new(ActionController::Base) do
include StrongPaginationParams
end
# rubocop:enable Rails/ApplicationController
end
subject(:controller) { controller_class.new }
it 'returns an empty hash if params are not present' do
allow(controller).to receive(:params) do
ActionController::Parameters.new({})
end
expect(controller.pagination_params).to eq({})
end
it 'cleans up any params that are not allowed / relevant' do
allow(controller).to receive(:params) do
ActionController::Parameters.new(
page: 1,
per_page: 20,
limit: 20,
sort: 'asc',
order_by: 'created_at',
pagination: 'keyset',
id: 1,
something: 'else'
)
end
expect(controller.pagination_params.keys).to contain_exactly(*%w[page per_page limit sort order_by pagination])
end
it 'returns a StrongParameters object' do
allow(controller).to receive(:params) do
ActionController::Parameters.new(
page: 1
)
end
expect(controller.pagination_params.permitted?).to be true
end
end
|