mangopay 3.0.18 → 3.0.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -10
- data/lib/mangopay.rb +1 -0
- data/lib/mangopay/dispute.rb +124 -0
- data/lib/mangopay/version.rb +1 -1
- data/spec/mangopay/bank_account_spec.rb +4 -4
- data/spec/mangopay/dispute_spec.png +0 -0
- data/spec/mangopay/dispute_spec.rb +240 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b83a705cc7f7ea7dd6954de6b6b0ff58f44c5170
|
4
|
+
data.tar.gz: 3d8eaabef7fce1e401810458ec9010366a5832c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bf56bfe55dfdec69bd83df86a5fe9be1d758af762d5f2c96674b0dd988242ecd85058493013ee8c584b4648311c3aa610bec1304d8da1856139b2167aacb4b4
|
7
|
+
data.tar.gz: 5426a2cbec6a3191a4db3253e52dc54f5b3ba5f0f9c8541be07479285d13db7ad421477ec5ebad2a56fa00062b4907471b465d7783f9936f7d821c7f6eb5d10b
|
data/README.md
CHANGED
@@ -19,17 +19,12 @@ Since [v3.0.17](https://github.com/Mangopay/mangopay2-ruby-sdk/releases/tag/v3.0
|
|
19
19
|
## Usage
|
20
20
|
|
21
21
|
### Install
|
22
|
+
* You can get yourself a [free sandbox account](https://www.mangopay.com/get-started/create-sandbox/) or sign up for a [production account](https://www.mangopay.com/get-started/submit-your-app/create-credentials/) (note that validation of your production account can take a few days, so think about doing it in advance of when you actually want to go live).
|
23
|
+
|
22
24
|
* Install the gem by either running ```gem install mangopay```
|
23
25
|
or by adding it to your Gemfile ```gem 'mangopay'```
|
24
26
|
|
25
|
-
*
|
26
|
-
that will help you configure your access to the Mangopay API version 2.
|
27
|
-
Simply run ``rails generate mangopay:install CLIENT_ID CLIENT_NAME CLIENT_EMAIL``
|
28
|
-
where CLIENT_ID is the id you will use to connect to the api
|
29
|
-
and CLIENT_NAME is a full name that will be use to identify all communications
|
30
|
-
between you and the Mangopay Team.
|
31
|
-
|
32
|
-
* Otherwise, call ```MangoPay.configure``` in your script as shown in the snippet below.
|
27
|
+
* Using the credential info from the signup process above, call ```MangoPay.configure``` in your script as shown in the snippet below.
|
33
28
|
|
34
29
|
### Examples
|
35
30
|
|
@@ -37,7 +32,7 @@ between you and the Mangopay Team.
|
|
37
32
|
require 'mangopay'
|
38
33
|
|
39
34
|
|
40
|
-
# configuration
|
35
|
+
# configuration
|
41
36
|
MangoPay.configure do |c|
|
42
37
|
c.preproduction = true
|
43
38
|
c.client_id = 'YOUR_CLIENT_ID'
|
@@ -63,7 +58,7 @@ pagination # => {"page"=>1, "per_page"=>8, "total_pages"=>748, "total_items"=>59
|
|
63
58
|
accounts = MangoPay::BankAccount.fetch(john_id) # => [{...}, ...]: list of accounts data hashes (10 per page by default)
|
64
59
|
|
65
60
|
|
66
|
-
#
|
61
|
+
# error handling
|
67
62
|
begin
|
68
63
|
MangoPay::NaturalUser.create({})
|
69
64
|
rescue MangoPay::ResponseError => ex
|
data/lib/mangopay.rb
CHANGED
@@ -28,6 +28,7 @@ module MangoPay
|
|
28
28
|
autoload :KycDocument, 'mangopay/kyc_document'
|
29
29
|
autoload :Hook, 'mangopay/hook'
|
30
30
|
autoload :Refund, 'mangopay/refund'
|
31
|
+
autoload :Dispute, 'mangopay/dispute'
|
31
32
|
autoload :JSON, 'mangopay/json'
|
32
33
|
autoload :AuthorizationToken, 'mangopay/authorization_token'
|
33
34
|
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
3
|
+
module MangoPay
|
4
|
+
|
5
|
+
# See https://docs.mangopay.com/api-references/disputes/disputes/
|
6
|
+
class Dispute < Resource
|
7
|
+
include HTTPCalls::Fetch
|
8
|
+
include HTTPCalls::Update
|
9
|
+
class << self
|
10
|
+
|
11
|
+
def close(dispute_id)
|
12
|
+
url = url(dispute_id) + "/close/"
|
13
|
+
MangoPay.request(:put, url)
|
14
|
+
end
|
15
|
+
|
16
|
+
# +contested_funds+: Money hash
|
17
|
+
# see 'Contest' section @ https://docs.mangopay.com/api-references/disputes/disputes/
|
18
|
+
def contest(dispute_id, contested_funds)
|
19
|
+
url = url(dispute_id) + "/submit/"
|
20
|
+
MangoPay.request(:put, url, {ContestedFunds: contested_funds})
|
21
|
+
end
|
22
|
+
|
23
|
+
def resubmit(dispute_id)
|
24
|
+
url = url(dispute_id) + "/submit/"
|
25
|
+
MangoPay.request(:put, url)
|
26
|
+
end
|
27
|
+
|
28
|
+
def transactions(dispute_id, filters = {})
|
29
|
+
url = url(dispute_id) + "/transactions/"
|
30
|
+
MangoPay.request(:get, url, {}, filters)
|
31
|
+
end
|
32
|
+
|
33
|
+
def fetch_for_user(user_id, filters = {})
|
34
|
+
url = "#{MangoPay.api_path}/users/#{user_id}/disputes"
|
35
|
+
MangoPay.request(:get, url, {}, filters)
|
36
|
+
end
|
37
|
+
|
38
|
+
def fetch_for_wallet(wallet_id, filters = {})
|
39
|
+
url = "#{MangoPay.api_path}/wallets/#{wallet_id}/disputes"
|
40
|
+
MangoPay.request(:get, url, {}, filters)
|
41
|
+
end
|
42
|
+
|
43
|
+
#####################################################
|
44
|
+
# repudiations / settlement transfers
|
45
|
+
#####################################################
|
46
|
+
|
47
|
+
# see https://docs.mangopay.com/api-references/disputes/repudiations/
|
48
|
+
def fetch_repudiation(repudiation_id)
|
49
|
+
url = "#{MangoPay.api_path}/repudiations/#{repudiation_id}"
|
50
|
+
MangoPay.request(:get, url)
|
51
|
+
end
|
52
|
+
|
53
|
+
# +params+: hash; see https://docs.mangopay.com/api-references/disputes/settlement-transfers/
|
54
|
+
def create_settlement_transfer(repudiation_id, params)
|
55
|
+
url = "#{MangoPay.api_path}/repudiations/#{repudiation_id}/settlementtransfer/"
|
56
|
+
MangoPay.request(:post, url, params)
|
57
|
+
end
|
58
|
+
|
59
|
+
#####################################################
|
60
|
+
# documents
|
61
|
+
#####################################################
|
62
|
+
|
63
|
+
# +params+: hash; see https://docs.mangopay.com/api-references/disputes/dispute-documents/
|
64
|
+
def create_document(dispute_id, params)
|
65
|
+
url = url(dispute_id) + "/documents/"
|
66
|
+
MangoPay.request(:post, url, params)
|
67
|
+
end
|
68
|
+
|
69
|
+
def fetch_document(document_id)
|
70
|
+
url = "#{MangoPay.api_path}/dispute-documents/#{document_id}"
|
71
|
+
MangoPay.request(:get, url)
|
72
|
+
end
|
73
|
+
|
74
|
+
# +params+: hash; see 'Edit' section @ https://docs.mangopay.com/api-references/disputes/dispute-documents/
|
75
|
+
def update_document(dispute_id, document_id, params)
|
76
|
+
url = url(dispute_id) + "/documents/#{document_id}"
|
77
|
+
MangoPay.request(:put, url, params)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Fetches list of dispute documents:
|
81
|
+
# - for the particular dispute if +dispute_id+ is provided (not nil)
|
82
|
+
# - or for all disputes otherwise.
|
83
|
+
#
|
84
|
+
# Optional +filters+ is a hash accepting following keys:
|
85
|
+
# - +page+, +per_page+, +sort+: pagination and sorting params (see MangoPay::HTTPCalls::Fetch::ClassMethods#fetch)
|
86
|
+
# - filters such as +Type+ (e.g. 'REFUND_PROOF') and +Status+ (e.g. 'VALIDATED')
|
87
|
+
# - +BeforeDate+ (timestamp): filters documents with CreationDate _before_ this date
|
88
|
+
# - +AfterDate+ (timestamp): filters documents with CreationDate _after_ this date
|
89
|
+
#
|
90
|
+
# See https://docs.mangopay.com/api-references/disputes/dispute-documents/
|
91
|
+
#
|
92
|
+
def fetch_documents(dispute_id = nil, filters = {})
|
93
|
+
url = (dispute_id) ? url(dispute_id) + "/documents/" : "#{MangoPay.api_path}/dispute-documents/"
|
94
|
+
MangoPay.request(:get, url, {}, filters)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Adds the file page (attachment) to the given document.
|
98
|
+
#
|
99
|
+
# See https://docs.mangopay.com/api-references/disputes/dispute-document-pages/ :
|
100
|
+
# - Document have to be in 'CREATED' Status
|
101
|
+
# - You can create as many pages as needed
|
102
|
+
# - Change Status to 'VALIDATION_ASKED' to submit dispute documents
|
103
|
+
#
|
104
|
+
# The file_content_base64 param may be:
|
105
|
+
# - Base64 encoded file content
|
106
|
+
# - or nil: in this case pass the file path in the next param
|
107
|
+
#
|
108
|
+
def create_document_page(dispute_id, document_id, file_content_base64, file_path = nil)
|
109
|
+
if file_content_base64.nil? && !file_path.nil?
|
110
|
+
bts = File.open(file_path, 'rb') { |f| f.read }
|
111
|
+
file_content_base64 = Base64.encode64(bts)
|
112
|
+
end
|
113
|
+
# normally it returns 204 HTTP code on success
|
114
|
+
begin
|
115
|
+
url = url(dispute_id) + "/documents/#{document_id}/pages"
|
116
|
+
MangoPay.request(:post, url, {'File' => file_content_base64})
|
117
|
+
rescue ResponseError => ex
|
118
|
+
raise ex unless ex.code == '204'
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
data/lib/mangopay/version.rb
CHANGED
@@ -16,13 +16,13 @@ describe MangoPay::BankAccount do
|
|
16
16
|
it 'creates a new GB bank detail' do
|
17
17
|
created = create({
|
18
18
|
Type: 'GB',
|
19
|
-
AccountNumber: '
|
20
|
-
SortCode: '
|
19
|
+
AccountNumber: '63956474',
|
20
|
+
SortCode: '200000',
|
21
21
|
})
|
22
22
|
expect(created['Id']).not_to be_nil
|
23
23
|
expect(created['Type']).to eq('GB')
|
24
|
-
expect(created['AccountNumber']).to eq('
|
25
|
-
expect(created['SortCode']).to eq('
|
24
|
+
expect(created['AccountNumber']).to eq('63956474')
|
25
|
+
expect(created['SortCode']).to eq('200000')
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'creates a new US bank detail' do
|
Binary file
|
@@ -0,0 +1,240 @@
|
|
1
|
+
describe MangoPay::Dispute do
|
2
|
+
|
3
|
+
# IMPORTANT NOTE!
|
4
|
+
#
|
5
|
+
# Due to the fact the disputes CANNOT be created on user's side,
|
6
|
+
# a special approach in testing is needed.
|
7
|
+
# In order to get the tests below pass, a bunch of disputes have
|
8
|
+
# to be prepared on the API server side - if they're not, you can
|
9
|
+
# just skip these tests, as they won't pass.
|
10
|
+
before(:each) do
|
11
|
+
@disputes = MangoPay::Dispute.fetch({'page' => 1, 'per_page' => 100})
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'FETCH' do
|
15
|
+
it 'fetches disputes' do
|
16
|
+
expect(@disputes).to be_kind_of(Array)
|
17
|
+
expect(@disputes).not_to be_empty
|
18
|
+
end
|
19
|
+
it 'fetches a dispute' do
|
20
|
+
id = @disputes.first['Id']
|
21
|
+
dispute = MangoPay::Dispute.fetch(id)
|
22
|
+
expect(dispute['Id']).to eq(id)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'TRANSACTIONS' do
|
27
|
+
it 'fetches transactions for dispute' do
|
28
|
+
id = @disputes.first['Id']
|
29
|
+
transactions = MangoPay::Dispute.transactions(id, {'per_page' => 1})
|
30
|
+
expect(transactions).to be_kind_of(Array)
|
31
|
+
expect(transactions).not_to be_empty
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'FETCH FOR USER AND WALLET' do
|
36
|
+
it 'fetches disputes for user' do
|
37
|
+
id = @disputes.first['Id']
|
38
|
+
transactions = MangoPay::Dispute.transactions(id, {'per_page' => 1})
|
39
|
+
user_id = transactions[0]['AuthorId']
|
40
|
+
disputes = MangoPay::Dispute.fetch_for_user(user_id, {'per_page' => 1})
|
41
|
+
expect(disputes).to be_kind_of(Array)
|
42
|
+
expect(disputes).not_to be_empty
|
43
|
+
end
|
44
|
+
it 'fetches disputes for wallet' do
|
45
|
+
dispute = @disputes.find {|disp| disp['InitialTransactionId'] != nil}
|
46
|
+
expect(dispute).not_to be_nil, "Cannot test fetching disputes for wallet because there's no disputes with transaction ID in the disputes list."
|
47
|
+
payin = MangoPay::PayIn.fetch(dispute['InitialTransactionId'])
|
48
|
+
wallet_id = payin['CreditedWalletId']
|
49
|
+
disputes = MangoPay::Dispute.fetch_for_wallet(wallet_id, {'per_page' => 1})
|
50
|
+
expect(disputes).to be_kind_of(Array)
|
51
|
+
expect(disputes).not_to be_empty
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'UPDATE' do
|
56
|
+
it 'updates a dispute' do
|
57
|
+
dispute = @disputes.first
|
58
|
+
id = dispute['Id']
|
59
|
+
new_tag = dispute['Tag'] + '.com'
|
60
|
+
changed_dispute = MangoPay::Dispute.update(id, {Tag: new_tag})
|
61
|
+
expect(changed_dispute['Tag']).to eq(new_tag)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe 'FETCH REPUDIATION' do
|
66
|
+
it 'fetches a repudiation' do
|
67
|
+
dispute = @disputes.find {|disp| disp['InitialTransactionId'] != nil}
|
68
|
+
expect(dispute).not_to be_nil, "Cannot test closing dispute because there's no disputes with transaction ID in the disputes list."
|
69
|
+
transactions = MangoPay::Dispute.transactions(dispute['Id'], {'per_page' => 1})
|
70
|
+
repudiation_id = transactions[0]['Id']
|
71
|
+
repudiation = MangoPay::Dispute.fetch_repudiation(repudiation_id)
|
72
|
+
expect(repudiation['Id']).to eq(repudiation_id)
|
73
|
+
expect(repudiation['Nature']).to eq('REPUDIATION')
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe 'CREATE SETTLEMENT TRANSFER' do
|
78
|
+
it 'creates settlement transfer' do
|
79
|
+
dispute = @disputes.find {|disp| disp['Status'] == 'CLOSED'}
|
80
|
+
expect(dispute).not_to be_nil, "Cannot test creating settlement transfer because there's no closed disputes in the disputes list."
|
81
|
+
transactions = MangoPay::Dispute.transactions(dispute['Id'], {'per_page' => 1})
|
82
|
+
repudiation_id = transactions[0]['Id']
|
83
|
+
repudiation = MangoPay::Dispute.fetch_repudiation(repudiation_id)
|
84
|
+
params = {
|
85
|
+
AuthorId: repudiation['AuthorId'],
|
86
|
+
DebitedFunds: {Currency: 'EUR', Amount: 1},
|
87
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
88
|
+
Tag: 'Custom tag data'
|
89
|
+
}
|
90
|
+
transfer = MangoPay::Dispute.create_settlement_transfer(repudiation_id, params)
|
91
|
+
expect(transfer['Type']).to eq('TRANSFER')
|
92
|
+
expect(transfer['Nature']).to eq('SETTLEMENT')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe 'DISPUTE DOCUMENTS API' do
|
97
|
+
|
98
|
+
def find_dispute
|
99
|
+
dispute = @disputes.find {|disp| ['PENDING_CLIENT_ACTION', 'REOPENED_PENDING_CLIENT_ACTION'].include?(disp['Status'])}
|
100
|
+
expect(dispute).not_to be_nil, "Cannot test dispute document API because there's no dispute with expected status in the disputes list."
|
101
|
+
dispute
|
102
|
+
end
|
103
|
+
|
104
|
+
def create_doc(dispute = nil)
|
105
|
+
no_dispute_passed = dispute.nil?
|
106
|
+
dispute = find_dispute if no_dispute_passed
|
107
|
+
params = { Type: 'DELIVERY_PROOF', Tag: 'Custom tag data' }
|
108
|
+
doc = MangoPay::Dispute.create_document(dispute['Id'], params)
|
109
|
+
doc['dispute'] = dispute if no_dispute_passed # add it for testing purposes
|
110
|
+
doc
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'creates dispute document' do
|
114
|
+
doc = create_doc
|
115
|
+
expect(doc['Type']).to eq('DELIVERY_PROOF')
|
116
|
+
expect(doc['Tag']).to eq('Custom tag data')
|
117
|
+
expect(doc['Status']).to eq('CREATED')
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'fetches dispute document' do
|
121
|
+
created_doc = create_doc
|
122
|
+
fetched_doc = MangoPay::Dispute.fetch_document(created_doc['Id'])
|
123
|
+
fields = ['Id', 'Type', 'Tag', 'Status', 'CreationDate', 'RefusedReasonType', 'RefusedReasonMessage']
|
124
|
+
fields.each do |field|
|
125
|
+
expect(fetched_doc[field]).to eq(created_doc[field])
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'updates dispute document' do
|
130
|
+
created_doc = create_doc
|
131
|
+
changed_doc = MangoPay::Dispute.update_document(created_doc['dispute']['Id'], created_doc['Id'], {
|
132
|
+
Status: 'VALIDATION_ASKED'
|
133
|
+
})
|
134
|
+
expect(changed_doc['Id']).to eq(created_doc['Id'])
|
135
|
+
expect(changed_doc['Status']).to eq('VALIDATION_ASKED')
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'fetches a list of documents' do
|
139
|
+
disp = find_dispute
|
140
|
+
doc1 = create_doc(disp)
|
141
|
+
doc2 = create_doc(disp) # for the same dispute
|
142
|
+
|
143
|
+
filters = {'per_page' => 2, 'sort' => 'CreationDate:desc'}
|
144
|
+
|
145
|
+
# fetch last 2 docs for the dispute
|
146
|
+
docs = MangoPay::Dispute.fetch_documents(disp['Id'], filters)
|
147
|
+
expect(docs).to be_kind_of(Array)
|
148
|
+
expect(docs.count).to eq 2 # exactly 2 as pagiantion requested
|
149
|
+
# all 2 are at top as lastly created
|
150
|
+
# but may share the same CreationDate
|
151
|
+
# so the order between them is undetermined
|
152
|
+
expect(docs).to include(doc1, doc2)
|
153
|
+
|
154
|
+
# fetch all docs ever
|
155
|
+
docs = MangoPay::Dispute.fetch_documents()
|
156
|
+
expect(docs).to be_kind_of(Array)
|
157
|
+
expect(docs.count).to be >= 2
|
158
|
+
|
159
|
+
# fetch last 2 docs ever (sorting by date descending)
|
160
|
+
docs = MangoPay::Dispute.fetch_documents(nil, filters)
|
161
|
+
expect(docs).to be_kind_of(Array)
|
162
|
+
expect(docs.count).to eq 2 # exactly 2 as pagiantion requested
|
163
|
+
expect(docs).to include(doc1, doc2)
|
164
|
+
end
|
165
|
+
|
166
|
+
def create_doc_page(file)
|
167
|
+
disp = find_dispute
|
168
|
+
doc = create_doc(disp)
|
169
|
+
MangoPay::Dispute.create_document_page(disp['Id'], doc['Id'], file)
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'create_document_page accepts Base64 encoded file content' do
|
173
|
+
fnm = __FILE__.sub('.rb', '.png')
|
174
|
+
bts = File.open(fnm, 'rb') { |f| f.read }
|
175
|
+
b64 = Base64.encode64(bts)
|
176
|
+
ret = create_doc_page(b64)
|
177
|
+
expect(ret).to be_nil
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'create_document_page accepts file path' do
|
181
|
+
fnm = __FILE__.sub('.rb', '.png')
|
182
|
+
disp = find_dispute
|
183
|
+
doc = create_doc(disp)
|
184
|
+
ret = MangoPay::Dispute.create_document_page(disp['Id'], doc['Id'], nil, fnm)
|
185
|
+
expect(ret).to be_nil
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'create_document_page fails when input string is not base64-encoded' do
|
189
|
+
file = 'any file content...'
|
190
|
+
expect { create_doc_page(file) }.to raise_error { |err|
|
191
|
+
expect(err).to be_a MangoPay::ResponseError
|
192
|
+
expect(err.code).to eq '400'
|
193
|
+
expect(err.type).to eq 'param_error'
|
194
|
+
}
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
describe 'CONTEST' do
|
199
|
+
it 'contests a dispute' do
|
200
|
+
dispute = @disputes.find do |disp|
|
201
|
+
['PENDING_CLIENT_ACTION', 'REOPENED_PENDING_CLIENT_ACTION'].include?(disp['Status']) &&
|
202
|
+
['CONTESTABLE', 'RETRIEVAL'].include?(disp['DisputeType'])
|
203
|
+
end
|
204
|
+
expect(dispute).not_to be_nil, "Cannot test contesting dispute because there's no available disputes with expected status and type in the disputes list."
|
205
|
+
id = dispute['Id']
|
206
|
+
contested_funds = dispute['Status'] == 'PENDING_CLIENT_ACTION' ? { Amount: 10, Currency: 'EUR' } : nil;
|
207
|
+
changed_dispute = MangoPay::Dispute.contest(id, contested_funds)
|
208
|
+
expect(changed_dispute['Id']).to eq(id)
|
209
|
+
expect(changed_dispute['Status']).to eq('SUBMITTED')
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
describe 'RESUBMIT' do
|
214
|
+
it 'resubmits a dispute' do
|
215
|
+
dispute = @disputes.find do |disp|
|
216
|
+
['REOPENED_PENDING_CLIENT_ACTION'].include?(disp['Status'])
|
217
|
+
end
|
218
|
+
expect(dispute).not_to be_nil, "Cannot test resubmiting dispute because there's no available disputes with expected status in the disputes list."
|
219
|
+
id = dispute['Id']
|
220
|
+
changed_dispute = MangoPay::Dispute.resubmit(id)
|
221
|
+
expect(changed_dispute['Id']).to eq(id)
|
222
|
+
expect(changed_dispute['Status']).to eq('SUBMITTED')
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
describe 'CLOSE' do
|
227
|
+
it 'closes a dispute' do
|
228
|
+
dispute = @disputes.find do |disp|
|
229
|
+
['PENDING_CLIENT_ACTION', 'REOPENED_PENDING_CLIENT_ACTION'].include?(disp['Status']) &&
|
230
|
+
['CONTESTABLE', 'RETRIEVAL'].include?(disp['DisputeType'])
|
231
|
+
end
|
232
|
+
expect(dispute).not_to be_nil, "Cannot test closing dispute because there's no available disputes with expected status in the disputes list."
|
233
|
+
id = dispute['Id']
|
234
|
+
changed_dispute = MangoPay::Dispute.close(id)
|
235
|
+
expect(changed_dispute['Id']).to eq(id)
|
236
|
+
expect(changed_dispute['Status']).to eq('CLOSED')
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mangopay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoffroy Lorieux
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-10-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/mangopay/card.rb
|
78
78
|
- lib/mangopay/card_registration.rb
|
79
79
|
- lib/mangopay/client.rb
|
80
|
+
- lib/mangopay/dispute.rb
|
80
81
|
- lib/mangopay/errors.rb
|
81
82
|
- lib/mangopay/event.rb
|
82
83
|
- lib/mangopay/hook.rb
|
@@ -102,6 +103,8 @@ files:
|
|
102
103
|
- spec/mangopay/card_registration_spec.rb
|
103
104
|
- spec/mangopay/client_spec.rb
|
104
105
|
- spec/mangopay/configuration_spec.rb
|
106
|
+
- spec/mangopay/dispute_spec.png
|
107
|
+
- spec/mangopay/dispute_spec.rb
|
105
108
|
- spec/mangopay/event_spec.rb
|
106
109
|
- spec/mangopay/fetch_filters_spec.rb
|
107
110
|
- spec/mangopay/hook_spec.rb
|
@@ -153,6 +156,8 @@ test_files:
|
|
153
156
|
- spec/mangopay/card_registration_spec.rb
|
154
157
|
- spec/mangopay/client_spec.rb
|
155
158
|
- spec/mangopay/configuration_spec.rb
|
159
|
+
- spec/mangopay/dispute_spec.png
|
160
|
+
- spec/mangopay/dispute_spec.rb
|
156
161
|
- spec/mangopay/event_spec.rb
|
157
162
|
- spec/mangopay/fetch_filters_spec.rb
|
158
163
|
- spec/mangopay/hook_spec.rb
|