Sha256: 0bb6977bb65efa81e6d3c2fbd46b03c0e38803135b8cce7d7e4b61dcbc45742f

Contents?: true

Size: 1.69 KB

Versions: 2

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

require_relative './request_examples'

RSpec.shared_examples 'CoinsPaid API withdrawal' do |request_data:|
  endpoint = 'https://app.coinspaid.com/api/v2/withdrawal/crypto'

  include_context 'CoinsPaid API request', request_data: request_data

  let(:response_data) do
    {
      'data' => {
        'id' => 1,
        'foreign_id' => 'user-id:2048',
        'type' => 'withdrawal',
        'status' => 'processing',
        'amount' => '10.00000000',
        'sender_amount' => '10.00000000',
        'sender_currency' => 'EUR',
        'receiver_amount' => '0.00100000',
        'receiver_currency' => 'BTC'
      }
    }
  end
  let(:expected_withdrawal_attributes) do
    {
      external_id: 1,
      receiver_amount: 0.001
    }
  end
  subject(:withdraw) { described_class.withdraw(request_data) }

  context 'when response is successful' do
    before do
      stub_request(:post, endpoint)
        .with(body: request_data, headers: request_signature_headers)
        .to_return(status: 201, body: response_data.to_json)
    end

    it 'returns valid response' do
      expect(withdraw).to be_struct_with_params(CoinsPaid::API::Withdrawal::Response, expected_withdrawal_attributes)
    end
  end
end

describe CoinsPaid::API, '.withdraw' do
  base_request_data = {
    foreign_id: 'user-id:2048',
    amount: '0.01',
    currency: 'EUR',
    convert_to: 'BTC',
    address: 'abc123'
  }

  context 'request includes tag parameter' do
    it_behaves_like 'CoinsPaid API withdrawal', request_data: base_request_data.merge(tag: 'thetag')
  end

  context 'request does not include tag parameter' do
    it_behaves_like 'CoinsPaid API withdrawal', request_data: base_request_data
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
coins_paid_api-1.0.7 spec/withdrawal_spec.rb
coins_paid_api-1.0.6 spec/withdrawal_spec.rb