spec/lib/azeroth/request_handler/index_spec.rb in azeroth-0.8.0 vs spec/lib/azeroth/request_handler/index_spec.rb in azeroth-0.8.1

- old
+ new

@@ -12,43 +12,118 @@ context 'when pagination is active' do it_behaves_like 'a request handler' do let(:documents_count) { Random.rand(21..30) } let(:expected_resource) { Document.all.limit(20) } let(:options_hash) { { paginated: true } } + + it 'adds total pages header' do + handler.process + expect(controller_headers['pages']).to eq(2) + end + + it 'adds current page header' do + handler.process + expect(controller_headers['page']).to eq(1) + end + + it 'adds per page header' do + handler.process + expect(controller_headers['per_page']).to eq(20) + end end context 'when page is given' do it_behaves_like 'a request handler' do let(:documents_count) { Random.rand(41..50) } let(:expected_resource) { Document.all.offset(20).limit(20) } let(:options_hash) { { paginated: true } } let(:extra_params) { { page: '2' } } + + it 'adds total pages header' do + handler.process + expect(controller_headers['pages']).to eq(3) + end + + it 'adds current page header' do + handler.process + expect(controller_headers['page']).to eq(2) + end + + it 'adds per page header' do + handler.process + expect(controller_headers['per_page']).to eq(20) + end end end context 'when third page is given' do it_behaves_like 'a request handler' do let(:documents_count) { Random.rand(41..50) } let(:expected_resource) { Document.all.offset(40) } let(:options_hash) { { paginated: true } } let(:extra_params) { { page: '3' } } + + it 'adds total pages header' do + handler.process + expect(controller_headers['pages']).to eq(3) + end + + it 'adds current page header' do + handler.process + expect(controller_headers['page']).to eq(3) + end + + it 'adds per page header' do + handler.process + expect(controller_headers['per_page']).to eq(20) + end end end context 'when per_page is not default' do it_behaves_like 'a request handler' do let(:documents_count) { Random.rand(21..30) } let(:expected_resource) { Document.all.limit(10) } let(:options_hash) { { paginated: true, per_page: 10 } } + + it 'adds total pages header' do + handler.process + expect(controller_headers['pages']).to eq(3) + end + + it 'adds current page header' do + handler.process + expect(controller_headers['page']).to eq(1) + end + + it 'adds per page header' do + handler.process + expect(controller_headers['per_page']).to eq(10) + end end end context 'when per page is given in params' do it_behaves_like 'a request handler' do let(:documents_count) { Random.rand(41..50) } - let(:expected_resource) { Document.all.offset(15).limit(15) } - let(:options_hash) { { paginated: true, per_page: 10 } } - let(:extra_params) { { page: '2', per_page: '15' } } + let(:expected_resource) { Document.all.offset(10).limit(10) } + let(:options_hash) { { paginated: true, per_page: 15 } } + let(:extra_params) { { page: '2', per_page: '10' } } + + it 'adds total pages header' do + handler.process + expect(controller_headers['pages']).to eq(5) + end + + it 'adds current page header' do + handler.process + expect(controller_headers['page']).to eq(2) + end + + it 'adds per page header' do + handler.process + expect(controller_headers['per_page']).to eq(10) + end end end end end end