require File.expand_path(File.dirname(__FILE__) + "/../spec_helper") describe "Braintree::ResourceCollection" do describe "enumeration" do it "iterates over the elements, yielding to the block in pages" do values = %w(a b c d e) collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids| ids.map { |id| values[id] } end count = 0 collection.each_with_index do |item, index| item.should == values[index] count += 1 end count.should == 5 end end describe "#first" do it "returns nil with no results" do values = %w(a b c d e) collection = Braintree::ResourceCollection.new(:search_results => {:ids => [], :page_size => 2}) do |ids| ids.map { |id| values[id] } end collection.first.should == nil end context "with results" do let(:collection) do values = %w(a b c d e) Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids| ids.map { |id| values[id] } end end it "returns the first occourence" do collection.first.should == "a" end it "returns the first N occourences" do collection.first(4).should == ["a","b","c","d"] end end end describe "#ids" do it "returns a list of the resource collection ids" do collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) collection.ids.should == [0,1,2,3,4] end end it "returns an empty array when the collection is empty" do collection = Braintree::ResourceCollection.new(:search_results => {:page_size => 2}) collection.ids.should == [] end end