Sha256: b9a6c46df719ef424e674dea90df9e070e48888e9059a14744c62e4291c12142
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
# frozen_string_literal: true RSpec.describe SoapyBing::Soap::Request::PollGenerateReportRequest do describe '#perform' do let(:response_body) do { 'Envelope' => { 'Body' => { 'PollGenerateReportResponse' => { 'ReportRequestStatus' => { 'Status' => nil, 'ReportDownloadUrl' => 'http://example.com' } } } } } end let(:pending_response_body) do response_body['Envelope']['Body']['PollGenerateReportResponse'] \ ['ReportRequestStatus']['Status'] = 'Pending' response_body end let(:successful_response_body) do response_body['Envelope']['Body']['PollGenerateReportResponse'] \ ['ReportRequestStatus']['Status'] = 'Success' response_body end before do call_count = 0 allow(HTTParty).to receive(:post) do call_count += 1 call_count == 3 ? successful_response_body : pending_response_body end end subject do described_class .new( context: { oauth: double(:oauth_credentials).as_null_object, account: double(:account).as_null_object } ) .perform end it 'polls until successful response' do expect(HTTParty).to receive(:post).exactly(3).times expect(subject.payload).to eq 'http://example.com' end it 'throws PollingTimeoutError when exceeded polling tries' do stub_const('SoapyBing::Soap::Request::PollGenerateReportRequest::POLLING_TRIES', 1) expect(HTTParty).to receive(:post).once expect { subject }.to raise_error described_class::PollingTimeoutError end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
soapy_bing-0.0.5 | spec/soapy_bing/soap/request/poll_generate_report_request_spec.rb |