ru_bittrex 0.2.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 +7 -0
- data/.github/workflows/ruby.yml +23 -0
- data/.gitignore +9 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +27 -0
- data/LICENSE.txt +21 -0
- data/README.md +134 -0
- data/Rakefile +10 -0
- data/bin/console +13 -0
- data/bin/setup +6 -0
- data/credentials.example.yml +4 -0
- data/lib/ru_bittrex.rb +47 -0
- data/lib/ru_bittrex/account.rb +24 -0
- data/lib/ru_bittrex/address.rb +26 -0
- data/lib/ru_bittrex/balance.rb +25 -0
- data/lib/ru_bittrex/client.rb +69 -0
- data/lib/ru_bittrex/client_api.rb +96 -0
- data/lib/ru_bittrex/client_helper.rb +18 -0
- data/lib/ru_bittrex/configuration.rb +14 -0
- data/lib/ru_bittrex/currency.rb +32 -0
- data/lib/ru_bittrex/deposit.rb +37 -0
- data/lib/ru_bittrex/helpers.rb +10 -0
- data/lib/ru_bittrex/market.rb +32 -0
- data/lib/ru_bittrex/order.rb +5 -0
- data/lib/ru_bittrex/summary.rb +28 -0
- data/lib/ru_bittrex/ticker.rb +24 -0
- data/lib/ru_bittrex/version.rb +3 -0
- data/ru_bittrex.gemspec +29 -0
- data/test/fixtures/account.json +5 -0
- data/test/fixtures/address.json +5 -0
- data/test/fixtures/balance.json +6 -0
- data/test/fixtures/currency.json +13 -0
- data/test/fixtures/deposit.json +13 -0
- data/test/fixtures/market.json +12 -0
- data/test/fixtures/summary.json +9 -0
- data/test/fixtures/ticker.json +6 -0
- data/test/ru_bittrex/account_test.rb +31 -0
- data/test/ru_bittrex/address_test.rb +30 -0
- data/test/ru_bittrex/balance_test.rb +32 -0
- data/test/ru_bittrex/client_api_test.rb +61 -0
- data/test/ru_bittrex/client_helper_test.rb +48 -0
- data/test/ru_bittrex/client_test.rb +45 -0
- data/test/ru_bittrex/configuration_test.rb +61 -0
- data/test/ru_bittrex/currency_test.rb +38 -0
- data/test/ru_bittrex/deposit_test.rb +47 -0
- data/test/ru_bittrex/helpers_test.rb +17 -0
- data/test/ru_bittrex/market_test.rb +38 -0
- data/test/ru_bittrex/summary_test.rb +35 -0
- data/test/ru_bittrex/ticker_test.rb +31 -0
- data/test/ru_bittrex_test.rb +7 -0
- data/test/test_helper.rb +10 -0
- metadata +178 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module RuBittrex
|
4
|
+
class AddressTest < Minitest::Test
|
5
|
+
def test_address_structure
|
6
|
+
data = fixture(:address)
|
7
|
+
address = Address.new(data)
|
8
|
+
|
9
|
+
assert_equal "ACTIVE", address.status
|
10
|
+
assert_equal "BTC", address.currency
|
11
|
+
assert_equal "242tgf4tgty45gtg", address.address
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_get_address
|
15
|
+
data = fixture(:address)
|
16
|
+
address = Address.new(data)
|
17
|
+
|
18
|
+
Address.expects(:get).with('btc').returns(address)
|
19
|
+
assert_equal address, Address.get('btc')
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_get_addresses
|
23
|
+
data = fixture(:address)
|
24
|
+
addresses = [Address.new(data), Address.new(data)]
|
25
|
+
|
26
|
+
Address.expects(:all).returns(addresses)
|
27
|
+
assert_equal addresses, Address.all
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "date"
|
2
|
+
require "test_helper"
|
3
|
+
|
4
|
+
module RuBittrex
|
5
|
+
class BalanceTest < Minitest::Test
|
6
|
+
def test_balance_structure
|
7
|
+
data = fixture(:balance)
|
8
|
+
balance = Balance.new(data)
|
9
|
+
|
10
|
+
assert_equal "BTC", balance.currency
|
11
|
+
assert_equal "1.4567", balance.total
|
12
|
+
assert_equal "1.4567", balance.available
|
13
|
+
assert_equal DateTime.parse("2018-08-10T00:00:00Z"), balance.updated_at
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_get_balance
|
17
|
+
data = fixture(:balance)
|
18
|
+
balance = Balance.new(data)
|
19
|
+
|
20
|
+
Balance.expects(:get).with('btc').returns(balance)
|
21
|
+
assert_equal balance, Balance.get('btc')
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_get_addresses
|
25
|
+
data = fixture(:balance)
|
26
|
+
balances = [Balance.new(data), Balance.new(data)]
|
27
|
+
|
28
|
+
Balance.expects(:all).returns(balances)
|
29
|
+
assert_equal balances, Balance.all
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module RuBittrex
|
4
|
+
class ClientApiTest < Minitest::Test
|
5
|
+
def test_client_api
|
6
|
+
client = Client.new(api_key: '12345', secret: '6789')
|
7
|
+
cl = { client: client }
|
8
|
+
|
9
|
+
Account.expects(:get).with(cl).returns(:success)
|
10
|
+
assert_equal :success, client.account
|
11
|
+
|
12
|
+
Account.expects(:volume).with(cl).returns(:success)
|
13
|
+
assert_equal :success, client.account_volume
|
14
|
+
|
15
|
+
Address.expects(:all).with(cl).returns(:success)
|
16
|
+
assert_equal :success, client.addresses
|
17
|
+
|
18
|
+
Address.expects(:get).with('btc', cl).returns(:success)
|
19
|
+
assert_equal :success, client.address('btc')
|
20
|
+
|
21
|
+
Balance.expects(:all).with(cl).returns(:success)
|
22
|
+
assert_equal :success, client.balances
|
23
|
+
|
24
|
+
Balance.expects(:get).with('btc', cl).returns(:success)
|
25
|
+
assert_equal :success, client.balance('btc')
|
26
|
+
|
27
|
+
Currency.expects(:all).with(cl).returns(:success)
|
28
|
+
assert_equal :success, client.currencies
|
29
|
+
|
30
|
+
Currency.expects(:get).with('btc', cl).returns(:success)
|
31
|
+
assert_equal :success, client.currency('btc')
|
32
|
+
|
33
|
+
Deposit.expects(:open).with(cl).returns(:success)
|
34
|
+
assert_equal :success, client.open_deposits
|
35
|
+
|
36
|
+
Deposit.expects(:closed).with(cl).returns(:success)
|
37
|
+
assert_equal :success, client.closed_deposits
|
38
|
+
|
39
|
+
Deposit.expects(:get).with('324-ger4-34tg-w4e', cl).returns(:success)
|
40
|
+
assert_equal :success, client.deposit('324-ger4-34tg-w4e')
|
41
|
+
|
42
|
+
Market.expects(:all).with(cl).returns(:success)
|
43
|
+
assert_equal :success, client.markets
|
44
|
+
|
45
|
+
Market.expects(:get).with('btc-usd', cl).returns(:success)
|
46
|
+
assert_equal :success, client.market('btc-usd')
|
47
|
+
|
48
|
+
Summary.expects(:all).with(cl).returns(:success)
|
49
|
+
assert_equal :success, client.summaries
|
50
|
+
|
51
|
+
Summary.expects(:get).with('btc-usd', cl).returns(:success)
|
52
|
+
assert_equal :success, client.summary('btc-usd')
|
53
|
+
|
54
|
+
Ticker.expects(:all).with(cl).returns(:success)
|
55
|
+
assert_equal :success, client.tickers
|
56
|
+
|
57
|
+
Ticker.expects(:get).with('btc-usd', cl).returns(:success)
|
58
|
+
assert_equal :success, client.ticker('btc-usd')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module RuBittrex
|
4
|
+
class ClientHelperTestHelper
|
5
|
+
extend ClientHelper
|
6
|
+
|
7
|
+
def initialize(nonce)
|
8
|
+
@nonce = nonce
|
9
|
+
end
|
10
|
+
|
11
|
+
def collection_test(data)
|
12
|
+
collection data
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class ClientHelperTest < Minitest::Test
|
17
|
+
include ClientHelper
|
18
|
+
|
19
|
+
def test_client_method
|
20
|
+
default_client = Client.new(api_key: '12345', secret: '6789')
|
21
|
+
custom_client = Client.new(api_key: '102030', secret: '405060')
|
22
|
+
|
23
|
+
RuBittrex.expects(:client).returns(default_client)
|
24
|
+
|
25
|
+
assert_equal default_client, client
|
26
|
+
assert_equal custom_client, client(custom_client)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_get_helper_method
|
30
|
+
RuBittrex.reset_client
|
31
|
+
|
32
|
+
market_data = fixture(:market)
|
33
|
+
markets = [market_data, market_data]
|
34
|
+
|
35
|
+
Configuration.any_instance.expects(:auth).returns({ api_key: '12345', secret: '6789' })
|
36
|
+
Client.any_instance.expects(:get).with('markets', {}).returns(markets)
|
37
|
+
|
38
|
+
assert_equal markets, _get('markets', {})
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_collection_method
|
42
|
+
helpers = [ClientHelperTestHelper.new(1), ClientHelperTestHelper.new(2)]
|
43
|
+
|
44
|
+
ClientHelperTestHelper.expects(:collection_test).with([1, 2]).returns(helpers)
|
45
|
+
assert_equal helpers, ClientHelperTestHelper.collection_test([1, 2])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module RuBittrex
|
4
|
+
class ClientTest < Minitest::Test
|
5
|
+
def test_auth_error
|
6
|
+
assert_raises(AuthError) { Client.new }
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_custom_client
|
10
|
+
client = Client.new(api_key: '1234567', secret: '7654321')
|
11
|
+
|
12
|
+
assert_instance_of RuBittrex::Client, client
|
13
|
+
assert_equal '1234567', client.api_key
|
14
|
+
assert_equal '7654321', client.secret
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_default_client
|
18
|
+
RuBittrex.reset_client
|
19
|
+
RuBittrex.reset_config
|
20
|
+
|
21
|
+
api_key = '12345'
|
22
|
+
secret = '6789'
|
23
|
+
|
24
|
+
RuBittrex.configure do |config|
|
25
|
+
config.api_key = api_key
|
26
|
+
config.secret = secret
|
27
|
+
end
|
28
|
+
|
29
|
+
client = RuBittrex.client
|
30
|
+
|
31
|
+
assert_equal api_key, client.api_key
|
32
|
+
assert_equal secret, client.secret
|
33
|
+
end
|
34
|
+
|
35
|
+
def reset_client
|
36
|
+
RuBittrex.reset_client
|
37
|
+
|
38
|
+
client = RuBittrex.client
|
39
|
+
assert_equal client, RuBittrex.instance_variable_get("@client")
|
40
|
+
|
41
|
+
RuBittrex.reset_client
|
42
|
+
assert_nil RuBittrex.instance_variable_get("@client")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module RuBittrex
|
4
|
+
class ConfigurationTest < Minitest::Test
|
5
|
+
def test_initialization
|
6
|
+
config = Configuration.new
|
7
|
+
|
8
|
+
assert_nil config.api_key
|
9
|
+
assert_nil config.secret
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_configurable
|
13
|
+
RuBittrex.reset_client
|
14
|
+
RuBittrex.reset_config
|
15
|
+
|
16
|
+
config = RuBittrex.configuration
|
17
|
+
api_key = '12345'
|
18
|
+
secret = '6789'
|
19
|
+
|
20
|
+
assert_nil config.api_key
|
21
|
+
assert_nil config.secret
|
22
|
+
|
23
|
+
RuBittrex.configure do |config|
|
24
|
+
assert_instance_of RuBittrex::Configuration, config
|
25
|
+
|
26
|
+
config.api_key = api_key
|
27
|
+
config.secret = secret
|
28
|
+
end
|
29
|
+
|
30
|
+
assert_equal api_key, config.api_key
|
31
|
+
assert_equal secret, config.secret
|
32
|
+
|
33
|
+
auth = { api_key: api_key, secret: secret }
|
34
|
+
assert_equal auth, config.auth
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_reset_config
|
38
|
+
RuBittrex.reset_config
|
39
|
+
|
40
|
+
api_key = '12345'
|
41
|
+
secret = '6789'
|
42
|
+
|
43
|
+
RuBittrex.configure do |config|
|
44
|
+
config.api_key = api_key
|
45
|
+
config.secret = secret
|
46
|
+
end
|
47
|
+
|
48
|
+
config = RuBittrex.configuration
|
49
|
+
assert_instance_of RuBittrex::Configuration, config
|
50
|
+
|
51
|
+
assert_equal api_key, config.api_key
|
52
|
+
assert_equal secret, config.secret
|
53
|
+
|
54
|
+
RuBittrex.reset_config
|
55
|
+
resetted = RuBittrex.configuration
|
56
|
+
|
57
|
+
assert_nil resetted.api_key
|
58
|
+
assert_nil resetted.secret
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module RuBittrex
|
4
|
+
class CurrencyTest < Minitest::Test
|
5
|
+
def test_currency_structure
|
6
|
+
data = fixture(:currency)
|
7
|
+
currency = Currency.new(data)
|
8
|
+
|
9
|
+
assert_equal "BTC", currency.symbol
|
10
|
+
assert_equal "Bitcoin", currency.name
|
11
|
+
assert_equal "BITCOIN", currency.coin_type
|
12
|
+
assert_equal "ONLINE", currency.status
|
13
|
+
assert_equal "10", currency.min_confirmations
|
14
|
+
assert_equal "example notice", currency.notice
|
15
|
+
assert_equal "0.005", currency.tx_fee
|
16
|
+
assert_equal "https://example.com/bitcoin.png", currency.logo_url
|
17
|
+
assert_equal ["US"], currency.prohibited_in
|
18
|
+
assert_equal "sfw35y4eer6eyhegsye", currency.address
|
19
|
+
assert_equal [], currency.terms
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_get_currency
|
23
|
+
data = fixture(:currency)
|
24
|
+
currency = Currency.new(data)
|
25
|
+
|
26
|
+
Currency.expects(:get).with('btc').returns(currency)
|
27
|
+
assert_equal currency, Currency.get('btc')
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_get_currencies
|
31
|
+
data = fixture(:currency)
|
32
|
+
currencies = [Currency.new(data), Currency.new(data)]
|
33
|
+
|
34
|
+
Currency.expects(:all).returns(currencies)
|
35
|
+
assert_equal currencies, Currency.all
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "date"
|
2
|
+
require "test_helper"
|
3
|
+
|
4
|
+
module RuBittrex
|
5
|
+
class DepositTest < Minitest::Test
|
6
|
+
def test_deposit_structure
|
7
|
+
data = fixture(:deposit)
|
8
|
+
deposit = Deposit.new(data)
|
9
|
+
|
10
|
+
assert_equal "rf3fr-r3fr45w-fry55-g54wr", deposit.id
|
11
|
+
assert_equal "BTC", deposit.currency
|
12
|
+
assert_equal "1.3345", deposit.quantity
|
13
|
+
assert_equal "35243tg57hh7yre53e5wt35at5", deposit.address
|
14
|
+
assert_equal "", deposit.address_tag
|
15
|
+
assert_equal "sfawrg67u85a4tt3w6uw", deposit.tx_id
|
16
|
+
assert_equal "30", deposit.confirmations
|
17
|
+
assert_equal DateTime.parse("2018-08-10T00:00:00Z"), deposit.updated_at
|
18
|
+
assert_equal DateTime.parse("2018-08-10T00:00:00Z"), deposit.completed_at
|
19
|
+
assert_equal "COMPLETED", deposit.status
|
20
|
+
assert_equal "BLOCKCHAIN", deposit.source
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_get_deposit
|
24
|
+
data = fixture(:deposit)
|
25
|
+
deposit = Deposit.new(data)
|
26
|
+
|
27
|
+
Deposit.expects(:get).with("rf3fr-r3fr45w-fry55-g54wr").returns(deposit)
|
28
|
+
assert_equal deposit, Deposit.get("rf3fr-r3fr45w-fry55-g54wr")
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_get_closed_deposits
|
32
|
+
data = fixture(:deposit)
|
33
|
+
deposits = [Deposit.new(data), Deposit.new(data)]
|
34
|
+
|
35
|
+
Deposit.expects(:closed).returns(deposits)
|
36
|
+
assert_equal deposits, Deposit.closed
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_get_open_deposits
|
40
|
+
data = fixture(:deposit)
|
41
|
+
deposits = [Deposit.new(data), Deposit.new(data)]
|
42
|
+
|
43
|
+
Deposit.expects(:open).returns(deposits)
|
44
|
+
assert_equal deposits, Deposit.open
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "date"
|
2
|
+
require "test_helper"
|
3
|
+
|
4
|
+
module RuBittrex
|
5
|
+
class HelpersTest < Minitest::Test
|
6
|
+
include Helpers
|
7
|
+
|
8
|
+
def test_extract_timestamp_helper
|
9
|
+
date = "2018-08-10T00:00:00Z"
|
10
|
+
parsed_date = DateTime.parse("2018-08-10T00:00:00Z")
|
11
|
+
|
12
|
+
assert_nil extract_timestamp(nil)
|
13
|
+
assert_nil extract_timestamp("")
|
14
|
+
assert_equal parsed_date, extract_timestamp(date)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "date"
|
2
|
+
require "test_helper"
|
3
|
+
|
4
|
+
module RuBittrex
|
5
|
+
class MarketTest < Minitest::Test
|
6
|
+
def test_market_structure
|
7
|
+
data = fixture(:market)
|
8
|
+
market = Market.new(data)
|
9
|
+
|
10
|
+
assert_equal "BCH-ETH", market.symbol
|
11
|
+
assert_equal "BCH", market.base_currency
|
12
|
+
assert_equal "ETH", market.quote_currency
|
13
|
+
assert_equal "0.004", market.min_trade
|
14
|
+
assert_equal "10", market.precision
|
15
|
+
assert_equal "ONLINE", market.status
|
16
|
+
assert_equal DateTime.parse("2018-08-10T00:00:00Z"), market.created_at
|
17
|
+
assert_equal "example notice", market.notice
|
18
|
+
assert_equal ["US"], market.prohibited_in
|
19
|
+
assert_equal [], market.terms
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_get_market
|
23
|
+
data = fixture(:market)
|
24
|
+
market = Market.new(data)
|
25
|
+
|
26
|
+
Market.expects(:get).with("BCH-ETH").returns(market)
|
27
|
+
assert_equal market, Market.get("BCH-ETH")
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_get_markets
|
31
|
+
data = fixture(:market)
|
32
|
+
markets = [Market.new(data), Market.new(data)]
|
33
|
+
|
34
|
+
Market.expects(:all).returns(markets)
|
35
|
+
assert_equal markets, Market.all
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "date"
|
2
|
+
require "test_helper"
|
3
|
+
|
4
|
+
module RuBittrex
|
5
|
+
class SummaryTest < Minitest::Test
|
6
|
+
def test_summary_structure
|
7
|
+
data = fixture(:summary)
|
8
|
+
summary = Summary.new(data)
|
9
|
+
|
10
|
+
assert_equal "4ART-BTC", summary.symbol
|
11
|
+
assert_equal "0.00003", summary.high
|
12
|
+
assert_equal "0.000005", summary.low
|
13
|
+
assert_equal "14455.56", summary.volume
|
14
|
+
assert_equal "14.5543", summary.quote_volume
|
15
|
+
assert_equal "-2.76", summary.percent_change
|
16
|
+
assert_equal DateTime.parse("2018-08-10T00:00:00Z"), summary.updated_at
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_get_summary
|
20
|
+
data = fixture(:summary)
|
21
|
+
summary = Summary.new(data)
|
22
|
+
|
23
|
+
Summary.expects(:get).with("4ART-BTC").returns(summary)
|
24
|
+
assert_equal summary, Summary.get("4ART-BTC")
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_get_summaries
|
28
|
+
data = fixture(:summary)
|
29
|
+
summaries = [Summary.new(data), Summary.new(data)]
|
30
|
+
|
31
|
+
Summary.expects(:all).returns(summaries)
|
32
|
+
assert_equal summaries, Summary.all
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|