crypto_arbitrer 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,20 @@
1
+ module CryptoArbitrer
2
+ module SpecHelper
3
+ def stub_crypto_arbitrer_get(url, mock_name)
4
+ stub_request(:get, url)
5
+ .to_return(body: open(File.expand_path("../../../spec/mocks/#{mock_name}", __FILE__)).read)
6
+ end
7
+ def mock_crypto_arbitrer_requests!
8
+ stub_crypto_arbitrer_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
9
+ stub_crypto_arbitrer_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
10
+ stub_crypto_arbitrer_get('http://www.dolarparalelo.org/', 'dolarparalelo.html')
11
+ %w(ltc nmc nvc trc ppc ftc cnc).each do |crypto|
12
+ stub_crypto_arbitrer_get("https://btc-e.com/exchange/#{crypto}_btc", "btce_#{crypto}_btc.html")
13
+ end
14
+ %w(uyu brl clp sgd eur).each do |currency|
15
+ stub_crypto_arbitrer_get("http://rate-exchange.appspot.com/currency?from=usd&to=#{currency}",
16
+ "rate_exchange_usd_#{currency}.json")
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module CryptoArbitrer
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require "crypto_arbitrer/version"
2
+ require "crypto_arbitrer/spec_helper"
2
3
  require "json"
3
4
  require "open-uri"
4
5
 
@@ -159,7 +160,7 @@ module CryptoArbitrer
159
160
  # @param force [Boolean] Ignore the cache (does not read from it, and does not write to it). Defaults to false.
160
161
  # @return [{'buy' => Float, 'sell' => Float}] The buy and sell prices
161
162
  def self.fetch(from,to, force = false)
162
- new.fetch(from, to, force)
163
+ new.fetch(from.downcase, to.downcase, force)
163
164
  end
164
165
 
165
166
  protected
data/spec/base_spec.rb CHANGED
@@ -1,25 +1,14 @@
1
1
  require_relative '../lib/crypto_arbitrer.rb'
2
2
  require 'webmock/rspec'
3
3
  require 'csv'
4
+ RSpec.configure do |config|
5
+ config.include CryptoArbitrer::SpecHelper
6
+ end
4
7
 
5
8
  describe CryptoArbitrer::Base do
6
- def stub_get(url, mock_name)
7
- stub_request(:get, url)
8
- .to_return(body: open(File.expand_path("../mocks/#{mock_name}", __FILE__)).read)
9
- end
10
-
11
9
  describe 'when matching corpus of conversion rates' do
12
10
  before :each do
13
- stub_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
14
- stub_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
15
- stub_get('http://www.dolarparalelo.org/', 'dolarparalelo.html')
16
- %w(ltc nmc nvc trc ppc ftc cnc).each do |crypto|
17
- stub_get("https://btc-e.com/exchange/#{crypto}_btc", "btce_#{crypto}_btc.html")
18
- end
19
- %w(uyu brl clp sgd eur).each do |currency|
20
- stub_get("http://rate-exchange.appspot.com/currency?from=usd&to=#{currency}",
21
- "rate_exchange_usd_#{currency}.json")
22
- end
11
+ mock_crypto_arbitrer_requests!
23
12
  end
24
13
 
25
14
  CSV.read(File.expand_path('../conversions.csv', __FILE__), 'r').each do |from, to, buy, sell|
@@ -52,26 +41,26 @@ describe CryptoArbitrer::Base do
52
41
  end
53
42
 
54
43
  it 'hits dolarblue for usd to ars rate' do
55
- stub = stub_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
44
+ stub = stub_crypto_arbitrer_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
56
45
  subject.fetch_usd_ars
57
46
  stub.should have_been_requested
58
47
  end
59
48
 
60
49
  it 'hits mt.gox for the btc to usd rate' do
61
- stub = stub_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
50
+ stub = stub_crypto_arbitrer_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
62
51
  subject.fetch_btc_usd
63
52
  stub.should have_been_requested
64
53
  end
65
54
 
66
55
  it 'hits dolarparalelo for venezuelan bolivar' do
67
- stub = stub_get('http://www.dolarparalelo.org/', 'dolarparalelo.html')
56
+ stub = stub_crypto_arbitrer_get('http://www.dolarparalelo.org/', 'dolarparalelo.html')
68
57
  subject.fetch_usd_vef
69
58
  stub.should have_been_requested
70
59
  end
71
60
 
72
61
  it 'hits mt.gox and dolarblue for the btc to ars rate' do
73
- stub_ars = stub_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
74
- stub_btc = stub_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
62
+ stub_ars = stub_crypto_arbitrer_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
63
+ stub_btc = stub_crypto_arbitrer_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
75
64
  subject.fetch_btc_ars
76
65
  stub_ars.should have_been_requested
77
66
  stub_btc.should have_been_requested
@@ -79,7 +68,7 @@ describe CryptoArbitrer::Base do
79
68
 
80
69
  %w(ltc nmc nvc trc ppc ftc cnc).each do |currency|
81
70
  it "hits btc-e for the #{currency} to btc rate" do
82
- stub = stub_get("https://btc-e.com/exchange/#{currency}_btc", "btce_#{currency}_btc.html")
71
+ stub = stub_crypto_arbitrer_get("https://btc-e.com/exchange/#{currency}_btc", "btce_#{currency}_btc.html")
83
72
  subject.fetch(currency, 'btc')
84
73
  subject.fetch('btc', currency)
85
74
  stub.should have_been_requested.twice
@@ -88,7 +77,7 @@ describe CryptoArbitrer::Base do
88
77
 
89
78
  %w(uyu brl clp sgd eur).each do |currency|
90
79
  it "hits rate-exchange for the #{currency} to usd rate" do
91
- stub = stub_get("http://rate-exchange.appspot.com/currency?from=usd&to=#{currency}",
80
+ stub = stub_crypto_arbitrer_get("http://rate-exchange.appspot.com/currency?from=usd&to=#{currency}",
92
81
  "rate_exchange_usd_#{currency}.json")
93
82
  subject.fetch('usd', currency)
94
83
  subject.fetch(currency, 'usd')
@@ -98,7 +87,7 @@ describe CryptoArbitrer::Base do
98
87
 
99
88
  describe 'when caching remote calls' do
100
89
  it 'does not cache anything by default' do
101
- stub = stub_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
90
+ stub = stub_crypto_arbitrer_get("http://www.eldolarblue.net/getDolarBlue.php?as=json", 'dolarblue.json')
102
91
  2.times{ subject.fetch('usd', 'ars') }
103
92
  stub.should have_been_requested.twice
104
93
  end
@@ -106,7 +95,7 @@ describe CryptoArbitrer::Base do
106
95
  it 'caches when a cache_backend has been set, stops caching afterwards' do
107
96
  cache = {}
108
97
  subject.class.cache_backend = lambda {|from, to, block| cache[[from,to]] ||= block.call }
109
- stub = stub_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
98
+ stub = stub_crypto_arbitrer_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
110
99
  subject.fetch('btc', 'usd')
111
100
  cache[['btc','usd']].should be_a(Hash)
112
101
  subject.fetch('btc', 'usd')
@@ -119,7 +108,7 @@ describe CryptoArbitrer::Base do
119
108
  it 'does not cache for low level calls' do
120
109
  cache = {}
121
110
  subject.class.cache_backend = lambda {|from, to, block| cache[key] ||= block.call }
122
- stub = stub_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
111
+ stub = stub_crypto_arbitrer_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
123
112
  subject.fetch_btc_usd
124
113
  subject.fetch_btc_usd
125
114
  stub.should have_been_requested.twice
@@ -128,7 +117,7 @@ describe CryptoArbitrer::Base do
128
117
  it 'does not cache when using a force argument' do
129
118
  cache = {}
130
119
  subject.class.cache_backend = lambda {|from, to, block| cache[key] ||= block.call }
131
- stub = stub_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
120
+ stub = stub_crypto_arbitrer_get('http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast', 'mtgox.json')
132
121
  subject.fetch('btc', 'usd', true)
133
122
  subject.fetch('btc', 'usd', true)
134
123
  stub.should have_been_requested.twice
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crypto_arbitrer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-21 00:00:00.000000000 Z
12
+ date: 2013-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -109,6 +109,7 @@ files:
109
109
  - Rakefile
110
110
  - crypto_arbitrer.gemspec
111
111
  - lib/crypto_arbitrer.rb
112
+ - lib/crypto_arbitrer/spec_helper.rb
112
113
  - lib/crypto_arbitrer/version.rb
113
114
  - spec/base_spec.rb
114
115
  - spec/conversions.csv