bitex 0.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +63 -0
- data/.rubocop.yml +32 -0
- data/.ruby-version +1 -0
- data/bitex.gemspec +21 -18
- data/lib/bitex.rb +7 -1
- data/lib/bitex/api.rb +34 -41
- data/lib/bitex/ask.rb +74 -0
- data/lib/bitex/base_order.rb +106 -0
- data/lib/bitex/bid.rb +72 -0
- data/lib/bitex/buy.rb +8 -5
- data/lib/bitex/kyc_file.rb +31 -9
- data/lib/bitex/kyc_profile.rb +113 -38
- data/lib/bitex/{market.rb → market_data.rb} +3 -3
- data/lib/bitex/match.rb +30 -15
- data/lib/bitex/order.rb +6 -238
- data/lib/bitex/payment.rb +30 -18
- data/lib/bitex/rates.rb +6 -8
- data/lib/bitex/sell.rb +5 -5
- data/lib/bitex/specie_deposit.rb +9 -4
- data/lib/bitex/specie_withdrawal.rb +29 -28
- data/lib/bitex/trade.rb +4 -5
- data/lib/bitex/transaction.rb +7 -8
- data/lib/bitex/usd_deposit.rb +46 -47
- data/lib/bitex/usd_withdrawal.rb +33 -34
- data/lib/bitex/version.rb +1 -1
- data/spec/ask_spec.rb +17 -5
- data/spec/bid_spec.rb +17 -5
- data/spec/buy_spec.rb +14 -4
- data/spec/kyc_file_spec.rb +34 -18
- data/spec/kyc_profile_spec.rb +158 -122
- data/spec/order_spec.rb +1 -1
- data/spec/payment_spec.rb +51 -45
- data/spec/sell_spec.rb +14 -4
- data/spec/spec_helper.rb +7 -6
- data/spec/specie_deposit_spec.rb +10 -4
- data/spec/specie_withdrawal_spec.rb +26 -25
- data/spec/support/from_json_shared_examples.rb +20 -22
- data/spec/support/order_shared_examples.rb +14 -17
- data/spec/support/request_stubs.rb +18 -12
- data/spec/trade_spec.rb +5 -5
- data/spec/transaction_spec.rb +12 -13
- data/spec/usd_deposit_spec.rb +120 -105
- data/spec/usd_withdrawal_spec.rb +89 -79
- metadata +57 -10
@@ -1,39 +1,36 @@
|
|
1
1
|
shared_examples_for 'Order' do |api_path|
|
2
2
|
it 'lists all' do
|
3
|
-
stub_private(:get,
|
3
|
+
stub_private(:get, '/private/orders', 'orders')
|
4
4
|
order, empty = subject.class.all
|
5
5
|
order.should be_a subject.class
|
6
6
|
empty.should be_nil
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it 'gets one' do
|
10
10
|
stub_private(:get, "/private/#{api_path}/12345678", "#{api_path}_show")
|
11
|
-
order = subject.class.find(
|
11
|
+
order = subject.class.find(12_345_678)
|
12
12
|
order.should be_a subject.class
|
13
|
-
order.id.should ==
|
13
|
+
order.id.should == 12_345_678
|
14
14
|
end
|
15
|
-
|
16
|
-
it 'places for
|
17
|
-
stub_private(:post, "/private/#{api_path}", "#{api_path}_create",
|
18
|
-
|
19
|
-
order = subject.class.create!(:btc, 100.50, 1000.00)
|
15
|
+
|
16
|
+
it 'places for btc_usd' do
|
17
|
+
stub_private(:post, "/private/#{api_path}", "#{api_path}_create", { amount: 100.50, price: 1000.00, orderbook: 1 })
|
18
|
+
order = subject.class.create!(:btc_usd, 100.50, 1_000.00)
|
20
19
|
order.should be_a subject.class
|
21
20
|
order.status.should == :received
|
22
21
|
end
|
23
22
|
|
24
|
-
it 'places for
|
25
|
-
stub_private(:post, "/private/#{api_path}", "#{api_path}_create",
|
26
|
-
{amount: 100.50, price: 1000.00, specie: 1})
|
23
|
+
it 'places for btc_usd and waits until processed by our matching engine' do
|
24
|
+
stub_private(:post, "/private/#{api_path}", "#{api_path}_create", { amount: 100.50, price: 1_000.00, orderbook: 1})
|
27
25
|
stub_private(:get, "/private/#{api_path}/12345678", "#{api_path}_show")
|
28
|
-
order = subject.class.create!(:
|
26
|
+
order = subject.class.create!(:btc_usd, 100.50, 1_000.00, true)
|
29
27
|
order.should be_a subject.class
|
30
28
|
order.status.should == :executing
|
31
29
|
end
|
32
|
-
|
30
|
+
|
33
31
|
it 'cancels one' do
|
34
|
-
stub_private(:post, "/private/#{api_path}", "#{api_path}_create",
|
35
|
-
|
36
|
-
order = subject.class.create!(:btc, 100.50, 1000.00)
|
32
|
+
stub_private(:post, "/private/#{api_path}", "#{api_path}_create", { amount: 100.50, price: 1_000.00, orderbook: 1})
|
33
|
+
order = subject.class.create!(:btc_usd, 100.50, 1_000.00)
|
37
34
|
stub_private(:post, "/private/#{api_path}/#{order.id}/cancel", "#{api_path}_cancel")
|
38
35
|
order.cancel!
|
39
36
|
order.status.should == :cancelling
|
@@ -1,25 +1,31 @@
|
|
1
1
|
require 'open-uri'
|
2
|
+
|
2
3
|
module RequestStubs
|
3
4
|
def stub_get(path, fixture)
|
4
5
|
stub_api(:get, path, fixture, {})
|
5
6
|
end
|
6
|
-
|
7
|
+
|
7
8
|
def stub_private(method, path, fixture, options = {})
|
8
9
|
options[:api_key] = 'valid_api_key'
|
9
10
|
stub_api(method, path, fixture, options)
|
10
11
|
end
|
11
|
-
|
12
|
+
|
12
13
|
def stub_api(method, path, fixture, options)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
params =
|
15
|
+
if method == :get
|
16
|
+
{ query: options }
|
17
|
+
elsif method == :put
|
18
|
+
{ body: options.to_query }
|
19
|
+
else
|
20
|
+
{ body: options.map { |k, v| "#{k}=#{CGI.escape(v.to_s).gsub('+', '%20')}" } * '&' }
|
21
|
+
end
|
22
|
+
|
21
23
|
stub_request(method, "https://bitex.la/api-v1/rest#{path}")
|
22
|
-
.with(
|
23
|
-
.to_return(status: 200, body: File.read(fixture_path))
|
24
|
+
.with(params)
|
25
|
+
.to_return(status: 200, body: File.read(fixture_path(fixture)))
|
26
|
+
end
|
27
|
+
|
28
|
+
def fixture_path(filename)
|
29
|
+
File.expand_path("../../fixtures/#{filename}.json", __FILE__)
|
24
30
|
end
|
25
31
|
end
|
data/spec/trade_spec.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::Trade do
|
4
|
-
before(:each)
|
5
|
-
|
6
|
-
end
|
7
|
-
|
4
|
+
before(:each) { Bitex.api_key = 'valid_api_key' }
|
5
|
+
|
8
6
|
it 'gets all trades' do
|
9
|
-
stub_private(:get,
|
7
|
+
stub_private(:get, '/private/trades', :trades)
|
8
|
+
|
10
9
|
buy, sell, other = Bitex::Trade.all
|
10
|
+
|
11
11
|
buy.should be_a Bitex::Buy
|
12
12
|
sell.should be_a Bitex::Sell
|
13
13
|
other.should be_nil
|
data/spec/transaction_spec.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::Transaction do
|
4
|
-
before(:each)
|
5
|
-
|
6
|
-
end
|
7
|
-
|
4
|
+
before(:each) { Bitex.api_key = 'valid_api_key' }
|
5
|
+
|
8
6
|
it 'gets account summary' do
|
9
|
-
stub_private(:get,
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
stub_private(:get, '/private/account_summary', :account_summary)
|
8
|
+
|
9
|
+
buy, sell, specie_deposit, specie_withdrawal, usd_deposit, usd_withdrawal = Bitex::Transaction.all
|
10
|
+
|
11
|
+
buy.should be_an Bitex::Bid
|
12
|
+
sell.should be_an Bitex::Ask
|
13
|
+
specie_deposit.should be_an Bitex::SpecieDeposit
|
14
|
+
specie_withdrawal.should be_an Bitex::SpecieWithdrawal
|
15
|
+
usd_deposit.should be_an Bitex::UsdDeposit
|
16
|
+
usd_withdrawal.should be_an Bitex::UsdWithdrawal
|
18
17
|
end
|
19
18
|
end
|
data/spec/usd_deposit_spec.rb
CHANGED
@@ -1,124 +1,139 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::UsdDeposit do
|
4
|
-
before
|
5
|
-
|
6
|
-
|
4
|
+
before(:each) { Bitex.api_key = 'valid_api_key' }
|
5
|
+
|
6
|
+
let(:api_class_id) { 7 }
|
7
|
+
let(:id) { 12_345_678 }
|
8
|
+
let(:created_at) { 946_685_400 }
|
9
|
+
let(:requested_amount) { 110.0 }
|
10
|
+
let(:amount) { 100.0 }
|
11
|
+
let(:deposit_method) { 1 }
|
12
|
+
let(:status) { 1 }
|
13
|
+
let(:reason) { 0 }
|
14
|
+
let(:country) { 'UY' }
|
15
|
+
let(:currency) { 'UYU' }
|
16
|
+
let(:kyc_profile_id) { 1 }
|
17
|
+
let(:request_details) { 'bank of new york mellon' }
|
18
|
+
let(:astropay_response_body) { { 'status' => 'OK', 'link' => 'https://astr.com' } }
|
19
|
+
let(:third_party_reference) { 'REFERENCE' }
|
7
20
|
|
8
21
|
let(:as_json) do
|
9
|
-
[
|
10
|
-
|
11
|
-
{"status" => "OK","link" => "https://astr.com"}, 'ABABABABA']
|
22
|
+
[api_class_id, id, created_at, requested_amount, amount, deposit_method, status, reason, country,
|
23
|
+
currency, kyc_profile_id, request_details, astropay_response_body, third_party_reference]
|
12
24
|
end
|
13
25
|
|
14
26
|
it_behaves_like 'API class'
|
15
27
|
|
16
|
-
|
17
|
-
|
18
|
-
thing.should be_a BigDecimal
|
19
|
-
thing.should == 100.0
|
20
|
-
end
|
28
|
+
context 'deserializing from json' do
|
29
|
+
let(:deposit) { Bitex::UsdDeposit.from_json(as_json) }
|
21
30
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
it "sets country" do
|
29
|
-
Bitex::UsdDeposit.from_json(as_json).country.should == 'UY'
|
30
|
-
end
|
31
|
-
|
32
|
-
it "sets currency" do
|
33
|
-
Bitex::UsdDeposit.from_json(as_json).currency.should == 'UYU'
|
34
|
-
end
|
35
|
-
|
36
|
-
it "sets kyc profile" do
|
37
|
-
Bitex::UsdDeposit.from_json(as_json).kyc_profile_id.should == 1
|
38
|
-
end
|
39
|
-
|
40
|
-
it "sets details" do
|
41
|
-
Bitex::UsdDeposit.from_json(as_json).request_details.should ==
|
42
|
-
'bank of new york mellon'
|
43
|
-
end
|
44
|
-
|
45
|
-
it "sets the astropay_response_body" do
|
46
|
-
Bitex::UsdDeposit.from_json(as_json).astropay_response_body.should ==
|
47
|
-
{"status" => "OK","link" => "https://astr.com"}
|
48
|
-
end
|
31
|
+
it 'sets amount as BigDecimal' do
|
32
|
+
deposit.amount.should be_an BigDecimal
|
33
|
+
deposit.amount.should eq amount
|
34
|
+
end
|
49
35
|
|
50
|
-
|
51
|
-
|
52
|
-
|
36
|
+
it 'sets requested amount as BigDecimal' do
|
37
|
+
deposit.requested_amount.should be_an BigDecimal
|
38
|
+
deposit.requested_amount.should eq requested_amount
|
39
|
+
end
|
53
40
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
it "sets status #{code} to #{symbol}" do
|
58
|
-
as_json[5] = code
|
59
|
-
Bitex::UsdDeposit.from_json(as_json).deposit_method.should == symbol
|
41
|
+
it 'sets country' do
|
42
|
+
deposit.country.should be_an String
|
43
|
+
deposit.country.should eq country
|
60
44
|
end
|
61
|
-
end
|
62
45
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
}.each do |code, symbol|
|
67
|
-
it "sets status #{code} to #{symbol}" do
|
68
|
-
as_json[6] = code
|
69
|
-
Bitex::UsdDeposit.from_json(as_json).status.should == symbol
|
46
|
+
it 'sets currency' do
|
47
|
+
deposit.currency.should be_an String
|
48
|
+
deposit.currency.should eq currency
|
70
49
|
end
|
71
|
-
end
|
72
50
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
51
|
+
it 'sets kyc profile' do
|
52
|
+
deposit.kyc_profile_id.should be_an Integer
|
53
|
+
deposit.kyc_profile_id.should be kyc_profile_id
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'sets details' do
|
57
|
+
deposit.request_details.should be_an String
|
58
|
+
deposit.request_details.should eq request_details
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'sets the astropay_response_body' do
|
62
|
+
deposit.astropay_response_body.should be_an Hash
|
63
|
+
deposit.astropay_response_body.keys.all? { |key| key.should be_an String }
|
64
|
+
deposit.astropay_response_body.values.all? { |value| value.should be_an String }
|
65
|
+
deposit.astropay_response_body.should eq astropay_response_body
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'sets the third party reference' do
|
69
|
+
deposit.third_party_reference.should be_an String
|
70
|
+
deposit.third_party_reference.should eq third_party_reference
|
71
|
+
end
|
72
|
+
|
73
|
+
Bitex::UsdDeposit.deposit_methods.each do |code, deposit_method|
|
74
|
+
it "sets deposit_method #{code} to #{deposit_method}" do
|
75
|
+
as_json[5] = code
|
76
|
+
deposit.deposit_method.should be deposit_method
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
Bitex::UsdDeposit.statuses.each do |code, status|
|
81
|
+
it "sets status #{code} to #{status}" do
|
82
|
+
as_json[6] = code
|
83
|
+
deposit.status.should be status
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
Bitex::UsdDeposit.reasons.each do |code, reason|
|
88
|
+
it "sets reason #{code} to #{reason}" do
|
89
|
+
as_json[7] = code
|
90
|
+
deposit.reason.should be reason
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'creates a new deposit' do
|
95
|
+
stub_private(
|
96
|
+
:post,
|
97
|
+
'/private/usd/deposits',
|
98
|
+
:usd_deposit,
|
99
|
+
country: country, amount: amount, currency: currency, deposit_method: deposit_method, request_details: request_details
|
100
|
+
)
|
101
|
+
|
102
|
+
deposit = Bitex::UsdDeposit.create!(country, amount, currency, deposit_method, request_details)
|
103
|
+
|
104
|
+
deposit.should be_an Bitex::UsdDeposit
|
105
|
+
deposit.astropay_response_body.should be_an Hash
|
106
|
+
deposit.status.should be :pending
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'finds a single usd deposit' do
|
110
|
+
stub_private(:get, "/private/usd/deposits/#{id}", :usd_deposit)
|
111
|
+
|
112
|
+
deposit = Bitex::UsdDeposit.find(id)
|
113
|
+
|
114
|
+
deposit.should be_an Bitex::UsdDeposit
|
115
|
+
deposit.status.should be :pending
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'cancels a deposit' do
|
119
|
+
stub_private(:get, "/private/usd/deposits/#{id}", :usd_deposit)
|
120
|
+
stub_private(:post, "/private/usd/deposits/#{id}/cancel", :cancelled_usd_deposit)
|
121
|
+
|
122
|
+
deposit = Bitex::UsdDeposit.find(id).cancel!
|
123
|
+
|
124
|
+
deposit.should be_an Bitex::UsdDeposit
|
125
|
+
deposit.status.should be :cancelled
|
126
|
+
deposit.reason.should be :user_cancelled
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'lists all usd deposits' do
|
130
|
+
stub_private(:get, '/private/usd/deposits', :usd_deposits)
|
131
|
+
|
132
|
+
deposits = Bitex::UsdDeposit.all
|
133
|
+
|
134
|
+
deposits.should be_an Array
|
135
|
+
deposits.all? { |deposit| deposit.should be_an Bitex::UsdDeposit }
|
136
|
+
deposits.all? { |deposit| deposit.status.should be :pending }
|
82
137
|
end
|
83
|
-
end
|
84
|
-
|
85
|
-
it 'creates a new deposit' do
|
86
|
-
stub_private(:post, "/private/usd/deposits", 'usd_deposit', {
|
87
|
-
country: 'UY',
|
88
|
-
amount: 110,
|
89
|
-
currency: 'UYU',
|
90
|
-
deposit_method: 'astropay',
|
91
|
-
request_details: 'bank of new york mellon',
|
92
|
-
})
|
93
|
-
deposit = Bitex::UsdDeposit.create!('UY', 110, 'UYU', 'astropay',
|
94
|
-
'bank of new york mellon')
|
95
|
-
deposit.should be_a Bitex::UsdDeposit
|
96
|
-
deposit.astropay_response_body.should be_a Hash
|
97
|
-
deposit.status.should == :pending
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'finds a single usd deposit' do
|
101
|
-
stub_private(:get, '/private/usd/deposits/1', 'usd_deposit')
|
102
|
-
deposit = Bitex::UsdDeposit.find(1)
|
103
|
-
deposit.should be_a Bitex::UsdDeposit
|
104
|
-
deposit.status.should == :pending
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'cancels a deposit' do
|
108
|
-
stub_private(:get, '/private/usd/deposits/12345678', 'usd_deposit')
|
109
|
-
stub_private(:post, '/private/usd/deposits/12345678/cancel', 'cancelled_usd_deposit')
|
110
|
-
deposit = Bitex::UsdDeposit.find(12345678)
|
111
|
-
deposit.cancel!
|
112
|
-
deposit.should be_a Bitex::UsdDeposit
|
113
|
-
deposit.status.should == :cancelled
|
114
|
-
deposit.reason.should == :user_cancelled
|
115
|
-
end
|
116
|
-
|
117
|
-
it 'lists all usd deposits' do
|
118
|
-
stub_private(:get, '/private/usd/deposits', 'usd_deposits')
|
119
|
-
deposits = Bitex::UsdDeposit.all
|
120
|
-
deposits.should be_an Array
|
121
|
-
deposits.first.should be_an Bitex::UsdDeposit
|
122
|
-
deposits.first.status.should == :pending
|
123
138
|
end
|
124
139
|
end
|
data/spec/usd_withdrawal_spec.rb
CHANGED
@@ -1,101 +1,111 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::UsdWithdrawal do
|
4
|
-
before
|
5
|
-
|
6
|
-
|
4
|
+
before(:each) { Bitex.api_key = 'valid_api_key' }
|
5
|
+
|
6
|
+
let(:api_class_id) { 8 }
|
7
|
+
let(:id) { 12_345_678 }
|
8
|
+
let(:created_at) { 946_685_400 }
|
9
|
+
let(:amount) { 100.0 }
|
10
|
+
let(:status) { 1 }
|
11
|
+
let(:reason) { 0 }
|
12
|
+
let(:country) { 'UY' }
|
13
|
+
let(:currency) { 'UYU' }
|
14
|
+
let(:payment_method) { 1 }
|
15
|
+
let(:label) { 'billy bob' }
|
16
|
+
let(:kyc_profile_id) { 1 }
|
17
|
+
let(:instructions) { 'instructions' }
|
7
18
|
|
8
19
|
let(:as_json) do
|
9
|
-
[
|
20
|
+
[api_class_id, id, created_at, amount, status, reason, country, currency, payment_method, label, kyc_profile_id, instructions]
|
10
21
|
end
|
11
22
|
|
12
23
|
it_behaves_like 'API class'
|
13
24
|
|
14
|
-
|
15
|
-
|
16
|
-
thing.should be_a BigDecimal
|
17
|
-
thing.should == 100.0
|
18
|
-
end
|
25
|
+
context 'Deserializing from json' do
|
26
|
+
let(:withdrawal) { Bitex::UsdWithdrawal.from_json(as_json) }
|
19
27
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
28
|
+
it 'sets amount as BigDecimal' do
|
29
|
+
withdrawal.amount.should be_an BigDecimal
|
30
|
+
withdrawal.amount.should eq amount
|
31
|
+
end
|
24
32
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
33
|
+
it 'sets country' do
|
34
|
+
withdrawal.country.should be_an String
|
35
|
+
withdrawal.country.should eq country
|
36
|
+
end
|
29
37
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
38
|
+
it 'sets currency' do
|
39
|
+
withdrawal.currency.should be_an String
|
40
|
+
withdrawal.currency.should eq currency
|
41
|
+
end
|
34
42
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
43
|
+
it 'sets payment method' do
|
44
|
+
withdrawal.payment_method.should be_an Symbol
|
45
|
+
withdrawal.payment_method.should be Bitex::UsdWithdrawal.payment_methods[payment_method]
|
46
|
+
end
|
39
47
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
48
|
+
it 'sets label' do
|
49
|
+
withdrawal.label.should be_an String
|
50
|
+
withdrawal.label.should eq label
|
51
|
+
end
|
44
52
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
53
|
+
it 'sets kyc profile id' do
|
54
|
+
withdrawal.kyc_profile_id.should be_an Integer
|
55
|
+
withdrawal.kyc_profile_id.should be kyc_profile_id
|
56
|
+
end
|
49
57
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
4 => :cancelled,
|
54
|
-
}.each do |code, symbol|
|
55
|
-
it "sets status #{code} to #{symbol}" do
|
56
|
-
as_json[4] = code
|
57
|
-
Bitex::UsdWithdrawal.from_json(as_json).status.should == symbol
|
58
|
+
it 'sets instructions' do
|
59
|
+
withdrawal.instructions.should be_an String
|
60
|
+
withdrawal.instructions.should eq instructions
|
58
61
|
end
|
59
|
-
end
|
60
62
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
it "sets reason #{code} to #{symbol}" do
|
67
|
-
as_json[5] = code
|
68
|
-
Bitex::UsdWithdrawal.from_json(as_json).reason.should == symbol
|
63
|
+
Bitex::UsdWithdrawal.statuses.each do |code, status|
|
64
|
+
it "sets status #{code} to #{status}" do
|
65
|
+
as_json[4] = code
|
66
|
+
withdrawal.status.should be status
|
67
|
+
end
|
69
68
|
end
|
70
|
-
end
|
71
69
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
70
|
+
Bitex::UsdWithdrawal.reasons.each do |code, reason|
|
71
|
+
it "sets reason #{code} to #{reason}" do
|
72
|
+
as_json[5] = code
|
73
|
+
withdrawal.reason.should be reason
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'creates a new withdrawal' do
|
78
|
+
stub_private(
|
79
|
+
:post,
|
80
|
+
'/private/usd/withdrawals',
|
81
|
+
:usd_withdrawal,
|
82
|
+
country: country, amount: amount, currency: currency, payment_method: payment_method, instructions: instructions,
|
83
|
+
label: label
|
84
|
+
)
|
85
|
+
|
86
|
+
withdrawal = Bitex::UsdWithdrawal.create!(country, amount, currency, payment_method, instructions, label)
|
87
|
+
|
88
|
+
withdrawal.should be_an Bitex::UsdWithdrawal
|
89
|
+
withdrawal.status.should == :received
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'finds a single usd withdrawal' do
|
93
|
+
stub_private(:get, "/private/usd/withdrawals/#{id}", :usd_withdrawal)
|
94
|
+
|
95
|
+
withdrawal = Bitex::UsdWithdrawal.find(id)
|
96
|
+
|
97
|
+
withdrawal.should be_an Bitex::UsdWithdrawal
|
98
|
+
withdrawal.status.should == :received
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'lists all usd withdrawals' do
|
102
|
+
stub_private(:get, '/private/usd/withdrawals', :usd_withdrawals)
|
103
|
+
|
104
|
+
withdrawals = Bitex::UsdWithdrawal.all
|
105
|
+
|
106
|
+
withdrawals.should be_an Array
|
107
|
+
withdrawals.all? { |withdrawal| withdrawal.should be_an Bitex::UsdWithdrawal }
|
108
|
+
withdrawals.all? { |withdrawal| withdrawal.status.should be :received }
|
109
|
+
end
|
100
110
|
end
|
101
111
|
end
|