Sha256: ea6c51dea7a2f4dd03c50744b48d557dc817c975505a74461069cdc734d114ff
Contents?: true
Size: 1.94 KB
Versions: 10
Compression:
Stored size: 1.94 KB
Contents
# frozen_string_literal: true require 'rails_helper' describe DHS::Collection do let(:total) { 443 } let(:limit) { 100 } def api_response(ids, offset) records = ids.map { |i| { id: i } } { items: records, total: total, limit: limit, offset: offset }.to_json end let(:datastore) { 'http://depay.fi/v2' } before do DHC.config.placeholder('datastore', datastore) class Record < DHS::Record endpoint '{+datastore}/{campaign_id}/feedbacks' endpoint '{+datastore}/feedbacks' end end context 'find_each' do it 'processes each record by fetching records in batches' do stub_request(:get, "#{datastore}/feedbacks?limit=100&offset=0").to_return(status: 200, body: api_response((1..100).to_a, 0)) stub_request(:get, "#{datastore}/feedbacks?limit=100&offset=100").to_return(status: 200, body: api_response((101..200).to_a, 100)) stub_request(:get, "#{datastore}/feedbacks?limit=100&offset=200").to_return(status: 200, body: api_response((201..300).to_a, 200)) stub_request(:get, "#{datastore}/feedbacks?limit=100&offset=300").to_return(status: 200, body: api_response((301..400).to_a, 300)) stub_request(:get, "#{datastore}/feedbacks?limit=100&offset=400").to_return(status: 200, body: api_response((401..total).to_a, 400)) count = 0 Record.find_each do |record| count += 1 expect(record.id).to eq(count) expect(record).to be_kind_of Record expect(record._proxy).to be_kind_of DHS::Item end expect(count).to eq total end it 'passes options to the requests made' do request = stub_request(:get, 'http://depay.fi/v2/feedbacks?limit=100&offset=0') .with(headers: { 'Authorization' => 'Bearer 123' }) .to_return(body: { items: [] }.to_json) Record.find_each(headers: { 'Authorization' => 'Bearer 123' }) { |record| } expect(request).to have_been_made end end end
Version data entries
10 entries across 10 versions & 1 rubygems