Sha256: 591598e877c68356819aae5a40d8db7649d9b01ff5f7d47c76775fc5a1bf65d4

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

require 'json'

RSpec.describe SoapyBing::Ads::Reports::CampaignPerformanceReport do
  let(:service) { SoapyBing::Ads.new }
  let(:report) do
    service.campaign_performance_report(
      date_start: '2015-10-14',
      date_end: '2015-10-14',
      # CampaignName is considered to be a sensitive data, lets not record it
      settings: { columns: %w(TimePeriod Impressions Clicks Spend) }
    )
  end
  let(:payload_fixture_path) do
    File.join('spec', 'fixtures', 'reports', 'campaign_performance_report.json')
  end
  let(:fixtured_payload) { JSON.load(File.read(payload_fixture_path)) }

  describe '#rows' do
    subject { report.rows }

    context 'when there is a successfull response during polling', :integration do
      it 'responds with report rows',
        vcr: { cassette_name: 'campaign_performance_report/with_successful_status' } do
        expect(subject).to eq fixtured_payload
      end
    end

    context 'when there is only pending responses during polling', :integration do
      before { stub_const('SoapyBing::Soap::Request::PollGenerateReportRequest::POLLING_TRIES', 1) }

      it 'throws exception PollingTimeoutError',
        vcr: { cassette_name: 'campaign_performance_report/with_pending_status' } do
        expect { subject }.to raise_error(
          SoapyBing::Soap::Request::PollGenerateReportRequest::PollingTimeoutError
        )
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
soapy_bing-0.0.4 spec/integration/soapy_bing/ads/reports/campaign_performance_report_spec.rb
soapy_bing-0.0.3 spec/integration/soapy_bing/ads/reports/campaign_performance_report_spec.rb
soapy_bing-0.0.2 spec/integration/soapy_bing/ads/reports/campaign_performance_report_spec.rb
soapy_bing-0.0.1 spec/integration/soapy_bing/ads/reports/campaign_performance_report_spec.rb