moneta-api 1.10.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0775314725a571de3eba1237d6135441ff8d755
4
- data.tar.gz: e093584a582e6aa8cfc0f16c786ca732a23cfb83
3
+ metadata.gz: 32e3556379b34c0d6f8f9c49e5ac900507a4cbc7
4
+ data.tar.gz: 592cac8f18ac96eec9789058866b5dc3cc4f0fd5
5
5
  SHA512:
6
- metadata.gz: 46da55895e4add3fa186c7ca8f84b292e0ca628694dbd576616c52a8c232c4f41f19510f57c38804dbb4a3011ef17f5f02d9e28b43ee01c8f66f98553abeb0b0
7
- data.tar.gz: e9f8396bc95d9daa176706040452d7961e635d71cc0b003d5d207ea649bc6df85aa7a302604aa72a1f572473f5646f6ecfcfaa8ed553094b564a145035c5ccc2
6
+ metadata.gz: a6611d4fb8741eac88f8ea29c65ea9c777df3e69e1ca38648f1211686d7964c3d670e8b25591bc738e958d035b0c87d1d0823d32d5ef1f7358c5ef21f0072788
7
+ data.tar.gz: 179a18fcc4097481d92aa42b8500a75d9a489199534a7706f8037a84afc30520b994b87993b0a76f2ff0d89492a7910236695eaefcaa4a3c372ad51f66482e68
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/moneta-api.svg)](http://badge.fury.io/rb/moneta-api)
2
- [![Build Status](https://travis-ci.org/ssnikolay/moneta-api.svg?branch=master)](https://travis-ci.org/ssnikolay/moneta-api)
2
+ [![Build Status](https://travis-ci.org/RuntimeLLC/moneta-api.svg?branch=master)](https://travis-ci.org/RuntimeLLC/moneta-api)
3
3
  [![Code Climate](https://codeclimate.com/github/ssnikolay/moneta-api/badges/gpa.svg)](https://codeclimate.com/github/ssnikolay/moneta-api)
4
4
  [![Test Coverage](https://codeclimate.com/github/ssnikolay/moneta-api/badges/coverage.svg)](https://codeclimate.com/github/ssnikolay/moneta-api)
5
5
  [![Inline docs](http://inch-ci.org/github/ssnikolay/moneta-api.svg?branch=master)](http://inch-ci.org/github/ssnikolay/moneta-api)
@@ -74,6 +74,7 @@ gem 'moneta-api'
74
74
  Moneta::Api::Service.new('username', 'password', {
75
75
  logger: Rails.logger,
76
76
  log_level: :info,
77
+ log: true,
77
78
  filters: [:password]
78
79
  })
79
80
  ```
@@ -0,0 +1,9 @@
1
+ module Moneta
2
+ module Api
3
+ module Requests
4
+ # Перевод денежных средств в пакетном режиме.
5
+ # Money Transfer Request in batch processing mode.
6
+ class TransferBatchRequest < Types::TransferBatchRequestType; end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module Moneta
2
+ module Api
3
+ module Responses
4
+ # Ответ на запрос проведения платежа в пакетном режиме.
5
+ # Transactions authorisation response in batch processing mode.
6
+
7
+ class TransferBatchResponse
8
+ include Moneta::Api::DataMapper
9
+
10
+ # @return [Array[Moneta::Api::Types::TransactionBatchResponseType]] Детали проведенных операций, либо описание ошибок, если операция не проведена.
11
+ # Порядок соответствует набору операций, переданных в TransferBatchRequest.
12
+ # Either transaction details or error description in order of appearance in corresponding request.
13
+ property :transaction, type: Moneta::Api::Types::TransactionBatchResponseType
14
+ end
15
+ end
16
+ end
17
+ end
@@ -115,6 +115,12 @@ module Moneta
115
115
  call(__method__, request)
116
116
  end
117
117
 
118
+ # @param [Moneta::Api::Requests::TransferBatchRequest]
119
+ # @return [Moneta::Api::Responses::TransferBatchResponse]
120
+ def transfer_batch(request)
121
+ call(__method__, request)
122
+ end
123
+
118
124
  # @param [Moneta::Api::Requests::PaymentRequest]
119
125
  # @return [Moneta::Api::Responses::PaymentResponse]
120
126
  def payment(request)
@@ -1,5 +1,3 @@
1
- require_relative 'entity'
2
-
3
1
  module Moneta
4
2
  module Api
5
3
  module Types
@@ -0,0 +1,47 @@
1
+ module Moneta
2
+ module Api
3
+ module Types
4
+ # Тип, описывающий параметры операции в запросах в пакетном режиме.
5
+ # Transaction parameters type for requests in batch processing mode.
6
+
7
+ class TransferBatchRequestType < Entity
8
+ # @return [Boolean] Флаг, указывающий выполнять ли все денежные переводы в одной транзакции.
9
+ # Если transactional = true, то:
10
+ # при возникновении ошибки все проведенные операции будут отменены
11
+ # можно проводить только операции со счетами монеты. Нельзя выводить деньги на внешние платежные системы.
12
+ # Если transactional = false, то:
13
+ # при возникновении ошибки все проведенные операции будут сохранены
14
+ # можно проводить любые операции, которые доступны в TransferRequest
15
+ # если выставить флаг exitOnFailure = false, то при возникновении ошибки можно пропустить операцию
16
+ # и продолжить выполнение операций дальше
17
+ # / Joining all transfers in batch processing into one transaction. True -- all processed transfers will be rolled back on exceptions, no external transfers are allowed. False -- only current transfer rolled back on exceptions, external transfers are allowed.
18
+ property :transactional
19
+
20
+ # @return [Boolean] Флаг, указывающий прерывать ли выполнение пакета операций, если произошла ошибка.
21
+ # Используется только при transactional = false
22
+ # / Stops batch processing on exceptions. Used only in conjunction with transactional=false.
23
+ property :exit_on_failure
24
+
25
+ # @return [Array[Moneta::Api::Types::Entity*]] Набор операций, которые необходимо выполнить в одном пакете.
26
+ # Операции выполняются в том порядке, в котором они переданы в запросе.
27
+ # / Set of transfers to be processed in one batch. Processed in order of appearance.
28
+ property :transaction
29
+
30
+ # Набор операций, которые необходимо выполнить в одном пакете.
31
+ # Операции выполняются в том порядке, в котором они переданы в запросе.
32
+ # / Set of transfers to be processed in one batch. Processed in order of appearance.
33
+ #
34
+ # @param [Moneta::Api::Types::Entity*]
35
+ # @return void
36
+ def add_transaction(item)
37
+ parents = item.class.ancestors
38
+ if parents.include?(Moneta::Api::Types::Entity)
39
+ (@transaction ||=[]).push(item)
40
+ else
41
+ raise TypeError.new("TypeError: #{ item.class } have not parent Moneta::Api::Types::Entity")
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,5 +1,5 @@
1
1
  module Moneta
2
2
  module Api
3
- VERSION = '1.10.0'
3
+ VERSION = '1.11.0'
4
4
  end
5
5
  end
data/lib/moneta/api.rb CHANGED
@@ -11,6 +11,7 @@ require 'moneta/api/runtime_exception'
11
11
  require 'moneta/api/http_exception'
12
12
  require 'moneta/api/connection_exception'
13
13
 
14
+ require 'moneta/api/types/entity'
14
15
  require 'moneta/api/types/account_access_info'
15
16
  require 'moneta/api/types/account_info'
16
17
  require 'moneta/api/types/authorise_transaction_batch_request_type'
@@ -21,7 +22,7 @@ require 'moneta/api/types/cancel_transaction_request_type'
21
22
  require 'moneta/api/types/cancel_transaction_response_type'
22
23
  require 'moneta/api/types/confirm_transaction_batch_request_type'
23
24
  require 'moneta/api/types/confirm_transaction_request_type'
24
- require 'moneta/api/types/entity'
25
+ require 'moneta/api/types/transfer_batch_request_type'
25
26
  require 'moneta/api/types/hash_entity'
26
27
  require 'moneta/api/types/key_value_entity'
27
28
  require 'moneta/api/types/find_operations_list_request_filter'
@@ -60,6 +61,7 @@ require 'moneta/api/requests/invoice_request'
60
61
  require 'moneta/api/requests/payment_request'
61
62
  require 'moneta/api/requests/refund_request'
62
63
  require 'moneta/api/requests/transfer_request'
64
+ require 'moneta/api/requests/transfer_batch_request'
63
65
  require 'moneta/api/requests/verify_payment_request'
64
66
  require 'moneta/api/requests/verify_transaction_request'
65
67
  require 'moneta/api/requests/verify_transfer_request'
@@ -98,6 +100,7 @@ require 'moneta/api/responses/invoice_response'
98
100
  require 'moneta/api/responses/payment_response'
99
101
  require 'moneta/api/responses/refund_response'
100
102
  require 'moneta/api/responses/transfer_response'
103
+ require 'moneta/api/responses/transfer_batch_response'
101
104
  require 'moneta/api/responses/verify_payment_response'
102
105
  require 'moneta/api/responses/verify_transaction_response'
103
106
  require 'moneta/api/responses/verify_transfer_response'
@@ -0,0 +1,73 @@
1
+ describe Moneta::Api::Requests::TransferBatchRequest do
2
+ describe 'Entity extension' do
3
+ subject { described_class.new.properties.keys }
4
+
5
+ it { is_expected.to be_include(:version) }
6
+ it { is_expected.to be_include(:transactional) }
7
+ end
8
+
9
+ describe '#add_transaction' do
10
+ let(:request) { described_class.new }
11
+ let(:add_transaction) { request.add_transaction(item) }
12
+
13
+ context 'when valid item' do
14
+ let(:item) { Moneta::Api::Requests::PaymentRequest.new }
15
+
16
+ it 'should success add' do
17
+ add_transaction
18
+ expect(request.transaction.count).to eq 1
19
+ end
20
+ end
21
+
22
+ context 'when invalid item' do
23
+ let(:item) { Hash.new }
24
+
25
+ it { expect { add_transaction }.to raise_error }
26
+ end
27
+ end
28
+
29
+ describe 'use', vcr: true do
30
+ include_context 'moneta'
31
+
32
+ let(:data) {
33
+ {
34
+ amount: 10,
35
+ payee: 28988504,
36
+ payer: 10999,
37
+ is_payer_amount: false,
38
+ payment_password: '12345'
39
+ }
40
+ }
41
+
42
+ let(:request) do
43
+ described_class.new.tap do |request|
44
+ request.transactional = false
45
+ request.exit_on_failure = true
46
+ operations.each { |o| request.add_transaction(o) }
47
+ end
48
+ end
49
+
50
+ subject { service.transfer_batch(request) }
51
+
52
+ context 'when one operation' do
53
+ let(:operations) do
54
+ [
55
+ Moneta::Api::Requests::TransferRequest.build(data)
56
+ ]
57
+ end
58
+
59
+ its('transaction.transaction') { is_expected.to be_a_kind_of(Moneta::Api::Types::TransactionResponseType) }
60
+ end
61
+
62
+ context 'when two operations' do
63
+ let(:operations) do
64
+ [
65
+ Moneta::Api::Requests::TransferRequest.build(data),
66
+ Moneta::Api::Requests::TransferRequest.build(data)
67
+ ]
68
+ end
69
+
70
+ its('transaction.first.transaction') { is_expected.to be_a_kind_of(Moneta::Api::Types::TransactionResponseType) }
71
+ end
72
+ end
73
+ end