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.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ruby.yml +23 -0
  3. data/.gitignore +9 -0
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +27 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +134 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +13 -0
  10. data/bin/setup +6 -0
  11. data/credentials.example.yml +4 -0
  12. data/lib/ru_bittrex.rb +47 -0
  13. data/lib/ru_bittrex/account.rb +24 -0
  14. data/lib/ru_bittrex/address.rb +26 -0
  15. data/lib/ru_bittrex/balance.rb +25 -0
  16. data/lib/ru_bittrex/client.rb +69 -0
  17. data/lib/ru_bittrex/client_api.rb +96 -0
  18. data/lib/ru_bittrex/client_helper.rb +18 -0
  19. data/lib/ru_bittrex/configuration.rb +14 -0
  20. data/lib/ru_bittrex/currency.rb +32 -0
  21. data/lib/ru_bittrex/deposit.rb +37 -0
  22. data/lib/ru_bittrex/helpers.rb +10 -0
  23. data/lib/ru_bittrex/market.rb +32 -0
  24. data/lib/ru_bittrex/order.rb +5 -0
  25. data/lib/ru_bittrex/summary.rb +28 -0
  26. data/lib/ru_bittrex/ticker.rb +24 -0
  27. data/lib/ru_bittrex/version.rb +3 -0
  28. data/ru_bittrex.gemspec +29 -0
  29. data/test/fixtures/account.json +5 -0
  30. data/test/fixtures/address.json +5 -0
  31. data/test/fixtures/balance.json +6 -0
  32. data/test/fixtures/currency.json +13 -0
  33. data/test/fixtures/deposit.json +13 -0
  34. data/test/fixtures/market.json +12 -0
  35. data/test/fixtures/summary.json +9 -0
  36. data/test/fixtures/ticker.json +6 -0
  37. data/test/ru_bittrex/account_test.rb +31 -0
  38. data/test/ru_bittrex/address_test.rb +30 -0
  39. data/test/ru_bittrex/balance_test.rb +32 -0
  40. data/test/ru_bittrex/client_api_test.rb +61 -0
  41. data/test/ru_bittrex/client_helper_test.rb +48 -0
  42. data/test/ru_bittrex/client_test.rb +45 -0
  43. data/test/ru_bittrex/configuration_test.rb +61 -0
  44. data/test/ru_bittrex/currency_test.rb +38 -0
  45. data/test/ru_bittrex/deposit_test.rb +47 -0
  46. data/test/ru_bittrex/helpers_test.rb +17 -0
  47. data/test/ru_bittrex/market_test.rb +38 -0
  48. data/test/ru_bittrex/summary_test.rb +35 -0
  49. data/test/ru_bittrex/ticker_test.rb +31 -0
  50. data/test/ru_bittrex_test.rb +7 -0
  51. data/test/test_helper.rb +10 -0
  52. 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