diff options
Diffstat (limited to 'spec/initializers/google_api_client_spec.rb')
-rw-r--r-- | spec/initializers/google_api_client_spec.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/initializers/google_api_client_spec.rb b/spec/initializers/google_api_client_spec.rb new file mode 100644 index 00000000000..0ed82d7debe --- /dev/null +++ b/spec/initializers/google_api_client_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +# Extracted from https://github.com/googleapis/google-api-ruby-client/blob/main/google-apis-core/spec/google/apis/core/http_command_spec.rb + +require 'spec_helper' +require 'google/apis/core/base_service' + +RSpec.describe Google::Apis::Core::HttpCommand do # rubocop:disable RSpec/FilePath + context('with a successful response') do + let(:client) { Google::Apis::Core::BaseService.new('', '').client } + let(:command) { Google::Apis::Core::HttpCommand.new(:get, 'https://www.googleapis.com/zoo/animals') } + + before do + stub_request(:get, 'https://www.googleapis.com/zoo/animals').to_return(body: %(Hello world)) + end + + it 'returns the response body if block not present' do + result = command.execute(client) + expect(result).to eql 'Hello world' + end + + it 'calls block if present' do + expect { |b| command.execute(client, &b) }.to yield_with_args('Hello world', nil) + end + + it 'retries with max elapsed_time and retries' do + expect(Retriable).to receive(:retriable).with( + tries: Google::Apis::RequestOptions.default.retries + 1, + max_elapsed_time: 3600, + base_interval: 1, + multiplier: 2, + on: described_class::RETRIABLE_ERRORS).and_call_original + allow(Retriable).to receive(:retriable).and_call_original + + command.execute(client) + end + end +end |