spec/a2z/requests/item_lookup_spec.rb in a2z-0.1.1 vs spec/a2z/requests/item_lookup_spec.rb in a2z-0.1.2

- old
+ new

@@ -3,11 +3,147 @@ describe A2z::Requests::ItemLookup do subject do A2z::Requests::ItemLookup.new(&block) end - let(:block) { Proc.new { } } + let(:block) { proc { } } describe '#params' do - it 'should return a hash' + specify { subject.params.should be_a Hash } + + it 'sets the operation' do + subject.params['Operation'].should eq 'ItemLookup' + end + + describe 'when id is specified' do + describe 'as a string' do + let(:block) { proc { id 'ABC123' } } + + it 'sets the item ID' do + subject.params['ItemId'].should eq 'ABC123' + end + end + + describe 'as an array' do + let(:block) { proc { id %w(ABC123 DEF456) } } + + it 'sets the comma-delimited item ID' do + subject.params['ItemId'].should eq 'ABC123,DEF456' + end + end + end + + describe 'when category is specified' do + let(:block) { proc { category 'Books' } } + + it 'sets the search index' do + subject.params['SearchIndex'].should eq 'Books' + end + end + + describe 'when response group is specified' do + let(:block) { proc { response_group 'Offers' } } + + it 'sets the response group' do + subject.params['ResponseGroup'].should eq 'Offers' + end + end + + describe 'when include reviews summary is specified' do + describe 'as true' do + let(:block) { proc { include_reviews_summary true } } + + it 'sets include reviews summary' do + subject.params['IncludeReviewsSummary'].should eq 'True' + end + end + + describe 'as false' do + let(:block) { proc { include_reviews_summary false } } + + it 'sets include reviews summary' do + subject.params['IncludeReviewsSummary'].should eq 'False' + end + end + end + + describe 'when condition is specified' do + let(:block) { proc { condition 'New' } } + + it 'sets condition' do + subject.params['Condition'].should eq 'New' + end + end + + describe 'when ID type is specified' do + let(:block) { proc { id_type 'ASIN' } } + + it 'sets ID type' do + subject.params['IdType'].should eq 'ASIN' + end + end + + describe 'when merchant ID is specified' do + let(:block) { proc { merchant_id 'ABC123' } } + + it 'sets merchant ID' do + subject.params['MerchantId'].should eq 'ABC123' + end + end + + describe 'when truncate reviews at is specified' do + let(:block) { proc { truncate_reviews_at 10 } } + + it 'sets truncate reviews at' do + subject.params['TruncateReviewsAt'].should eq 10 + end + end + + describe 'when variation page is specified' do + let(:block) { proc { variation_page 10 } } + + it 'sets variation page' do + subject.params['VariationPage'].should eq 10 + end + end + + describe 'when nothing is specified' do + let(:block) { proc { } } + + it 'does not set the item ID' do + subject.params.should_not have_key 'ItemId' + end + + it 'does not set the search index' do + subject.params.should_not have_key 'SearchIndex' + end + + it 'does not set the response group' do + subject.params.should_not have_key 'ResponseGroup' + end + + it 'does not set include reviews summary' do + subject.params.should_not have_key 'IncludeReviewsSummary' + end + + it 'does not set condition' do + subject.params.should_not have_key 'Condition' + end + + it 'does not set ID type' do + subject.params.should_not have_key 'IdType' + end + + it 'does not set merchant ID' do + subject.params.should_not have_key 'MerchantId' + end + + it 'does not set truncate reviews at' do + subject.params.should_not have_key 'TruncateReviewsAt' + end + + it 'does not set variation page' do + subject.params.should_not have_key 'VariationPage' + end + end end end