diff --git a/app/controllers/v1/educational_stages_controller.rb b/app/controllers/v1/educational_stages_controller.rb index f2ff30b80bf539a88eec52a7b77c1ad61f780160..3518fabd954327e2023efaaf64118559b3807255 100644 --- a/app/controllers/v1/educational_stages_controller.rb +++ b/app/controllers/v1/educational_stages_controller.rb @@ -1,9 +1,12 @@ class V1::EducationalStagesController < ApplicationController + include ::Paginator + + # GET /educational_stages # GET /educational_stages.json def index - educational_stages = EducationalStage.all + educational_stages = paginate EducationalStage.all render json: educational_stages end diff --git a/app/controllers/v1/subjects_controller.rb b/app/controllers/v1/subjects_controller.rb index c00ee1f852ecb5bed2b6586321da7db13ea60786..6b4ed162edf426978dfdec919e95cfcfee6f73bf 100644 --- a/app/controllers/v1/subjects_controller.rb +++ b/app/controllers/v1/subjects_controller.rb @@ -1,9 +1,12 @@ class V1::SubjectsController < ApplicationController + + include ::Paginator + # GET /subjects # GET /subjects.json def index - subjects = Subject.all + subjects = paginate Subject.all render json: subjects end diff --git a/spec/acceptance/educational_stages_spec.rb b/spec/acceptance/educational_stages_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..aad09050a1db7f85e517e21ed84709106d5bb8d0 --- /dev/null +++ b/spec/acceptance/educational_stages_spec.rb @@ -0,0 +1,25 @@ +require 'acceptance_helpers' + +resource 'Educational Stages' do + header 'Accept', 'application/json' + header 'Content-Type', 'application/json' + + before { 12.times { create(:educational_stage) } } + + let(:educational_stages) { EducationalStage.all } + + get '/v1/educational_stages' do + parameter :limit, 'Limit of educational stages' + parameter :offset, 'Offset of educational stages' + + let(:limit) { 12 } + let(:offset) { 0 } + + example_request 'Get a list of educational stages' do + # active model serializer may render model associations in different order for collections (array of items), so we're verifing only returned ids + expect(JSON.parse(response_body).map { |o| o['id'] }.sort).to eq(EducationalStage.limit(limit).offset(offset).pluck(:id).sort) + expect(status).to eq(200) + end + end + +end diff --git a/spec/factories/educational_stages.rb b/spec/factories/educational_stages.rb new file mode 100644 index 0000000000000000000000000000000000000000..2220d4a01de6f71c378eb0a2eef8b6007b5e3551 --- /dev/null +++ b/spec/factories/educational_stages.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :educational_stage do + sequence(:name) { |i| "EducationalStage #{i}" } + end +end