spec/github/pagination/iterator/number_spec.rb in github_api-0.12.1 vs spec/github/pagination/iterator/number_spec.rb in github_api-0.12.2

- old
+ new

@@ -1,118 +1,123 @@ # encoding: utf-8 require 'spec_helper' describe Github::PageIterator, 'when number' do - let(:header) { {"Link" => "<https://api.github.com/users/wycats/repos?page=4&per_page=20>; rel=\"next\", <https://api.github.com/users/wycats/repos?page=6&per_page=20>; rel=\"last\", <https://api.github.com/users/wycats/repos?page=1&per_page=20>; rel=\"first\", <https://api.github.com/users/wycats/repos?page=2&per_page=20>; rel=\"prev\""} - } - let(:links) { Github::PageLinks.new(header) } + let(:header) { { + "Link" => "<https://api.github.com/users/wycats/repos?page=4&per_page=20>; rel=\"next\", <https://api.github.com/users/wycats/repos?page=6&per_page=20>; rel=\"last\", <https://api.github.com/users/wycats/repos?page=1&per_page=20>; rel=\"first\", <https://api.github.com/users/wycats/repos?page=2&per_page=20>; rel=\"prev\"" + } } let(:first_link) { "https://api.github.com/users/wycats/repos?page=1&per_page=20" } let(:next_link) { "https://api.github.com/users/wycats/repos?page=4&per_page=20" } let(:prev_link) { "https://api.github.com/users/wycats/repos?page=2&per_page=20" } let(:last_link) { "https://api.github.com/users/wycats/repos?page=6&per_page=20" } + let(:links) { Github::PageLinks.new(header) } let(:current_api) { Github::Client::Repos.new } - let(:user) { 'wycats' } - let(:response) { double(:response).as_null_object } + let(:user) { 'wycats' } + let(:response) { double(:response).as_null_object } - subject(:instance) { described_class.new(links, current_api) } + subject(:iterator) { described_class.new(links, current_api) } before { - instance.stub(:has_next?).and_return true + allow(iterator).to receive(:next?).and_return(true) stub_get("/users/#{user}/repos"). - with(:query => { 'page' => '4', 'per_page' => '20'}). + with(query: { 'page' => '4', 'per_page' => '20'}). to_return(:body => '', :status => 200, :headers => header) } it { described_class::ATTRIBUTES.should_not be_nil } - its(:first_page) { should eq 1 } + it { expect(iterator.first_page).to eq(1) } - its(:first_page_uri) { should eq first_link } + it { expect(iterator.first_page_uri).to eq(first_link) } - its(:next_page) { should eq 4 } + it { expect(iterator.next_page).to eq(4)} - its(:next_page_uri) { should eq next_link} + it { expect(iterator.next_page_uri).to eq(next_link) } - its(:prev_page) { should eq 2 } + it { expect(iterator.prev_page).to eq(2)} - its(:prev_page_uri) { should eq prev_link } + it { expect(iterator.prev_page_uri).to eq(prev_link) } - its(:last_page) { should eq 6 } + it { expect(iterator.last_page).to eq(6)} - its(:last_page_uri) { should eq last_link } + it { expect(iterator.last_page_uri).to eq(last_link) } - context 'has_next?' do - it "return true when next_page_uri is present" do - expect(instance.has_next?).to be_true + context 'next?' do + it "returns true when next_page_uri is present" do + expect(iterator.next?).to eq(true) end end context 'first page request' do it 'returns nil if there are no more pages' do - instance.stub(:first_page_uri).and_return false - expect(instance.first).to be_nil + allow(iterator).to receive(:first_page_uri).and_return(false) + expect(iterator.first).to be_nil end it 'performs request' do - instance.should_receive(:page_request). + expect(iterator).to receive(:page_request). with("/users/#{user}/repos", 'per_page' => 20, 'page' => 1). - and_return response - instance.first + and_return(response) + iterator.first end end context 'next page request' do it 'returns nil if there are no more pages' do - instance.stub(:has_next?).and_return false - expect(instance.next).to be_nil + allow(iterator).to receive(:next?).and_return(false) + expect(iterator.next).to be_nil end it 'performs request' do - instance.should_receive(:page_request).with("/users/#{user}/repos", - 'page' => 4,'per_page' => 20).and_return response - instance.next + expect(iterator).to receive(:page_request). + with("/users/#{user}/repos", 'page' => 4,'per_page' => 20). + and_return(response) + iterator.next end end context 'prev page request' do it 'returns nil if there are no more pages' do - instance.stub(:prev_page_uri).and_return false - expect(instance.prev).to be_nil + allow(iterator).to receive(:prev_page_uri).and_return(false) + expect(iterator.prev).to be_nil end it 'performs request' do - instance.should_receive(:page_request).with("/users/#{user}/repos", - 'page' => 2,'per_page' => 20).and_return response - instance.prev + expect(iterator).to receive(:page_request). + with("/users/#{user}/repos", 'page' => 2,'per_page' => 20). + and_return(response) + iterator.prev end end context 'last page request' do it 'returns nil if there are no more pages' do - instance.stub(:last_page_uri).and_return false - expect(instance.last).to be_nil + allow(iterator).to receive(:last_page_uri).and_return(false) + expect(iterator.last).to be_nil end it 'performs request' do - instance.should_receive(:page_request).with("/users/#{user}/repos", - 'page' => 6,'per_page' => 20).and_return response - instance.last + expect(iterator).to receive(:page_request). + with("/users/#{user}/repos", 'page' => 6,'per_page' => 20). + and_return(response) + iterator.last end end context 'get_page request' do it 'returns nil if there are no more pages' do - instance.stub(:first_page_uri).and_return nil - instance.stub(:last_page_uri).and_return nil - expect(instance.get_page(5)).to be_nil + allow(iterator).to receive(:first_page_uri).and_return(nil) + allow(iterator).to receive(:last_page_uri).and_return(nil) + expect(iterator.get_page(5)).to be_nil end it 'performs request' do - instance.should_receive(:page_request).with("/users/#{user}/repos", - 'page' => 2,'per_page' => 20).and_return response - instance.get_page(2) + expect(iterator).to receive(:page_request). + with("/users/#{user}/repos", 'page' => 2,'per_page' => 20). + and_return(response) + iterator.get_page(2) end end end