diff --git a/lib/pfs/resources/collection.rb b/lib/pfs/resources/collection.rb index 158d47e..7c6d9e9 100644 --- a/lib/pfs/resources/collection.rb +++ b/lib/pfs/resources/collection.rb @@ -8,7 +8,7 @@ class Collection def initialize(response, item_klass, attributes_collection = []) @response = response - @attributes_collection = attributes_collection + @attributes_collection = attributes_collection || [] @items = attributes_collection.map { |attributes_item| item_klass.new(nil, attributes_item) } end diff --git a/spec/pfs/resources/collection_spec.rb b/spec/pfs/resources/collection_spec.rb new file mode 100644 index 0000000..d08cd92 --- /dev/null +++ b/spec/pfs/resources/collection_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +RSpec.describe PFS::Resources::Collection do + let(:response) { { data: [ { id: 1 }, { id: 2 }] }.to_json } + let(:item_klass) { double } + + before do + allow(item_klass).to receive(:new) + end + + context "with attributes_collection" do + subject(:collection) { PFS::Resources::Collection.new(response, item_klass, [{ id: 1 }, { id: 2 }]) } + + it "initialize object collection with test attributes" do + expect(collection.response).to eql(response) + expect(item_klass).to have_received(:new).with(nil, { id: 1 }).once + expect(item_klass).to have_received(:new).with(nil, { id: 2 }).once + end + end + + context "without attributes_collection" do + subject(:collection) { PFS::Resources::Collection.new(response, item_klass) } + + it "initialize object collection with nil attributes" do + expect(collection.response).to eql(response) + expect(item_klass).not_to have_received(:new) + end + end +end