bitreserve 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +3 -0
  4. data/.travis.yml +13 -0
  5. data/Gemfile +7 -1
  6. data/README.md +5 -0
  7. data/Rakefile +2 -3
  8. data/bitreserve.gemspec +2 -0
  9. data/lib/bitreserve.rb +16 -6
  10. data/lib/bitreserve/api.rb +22 -0
  11. data/lib/bitreserve/api/auth_token.rb +16 -0
  12. data/lib/bitreserve/api/card.rb +36 -0
  13. data/lib/bitreserve/api/contact.rb +34 -0
  14. data/lib/bitreserve/api/endpoints.rb +26 -0
  15. data/lib/bitreserve/api/private_transaction.rb +58 -0
  16. data/lib/bitreserve/api/public_transaction.rb +23 -0
  17. data/lib/bitreserve/api/ticker.rb +23 -0
  18. data/lib/bitreserve/api/transparency.rb +10 -0
  19. data/lib/bitreserve/api/user.rb +23 -0
  20. data/lib/bitreserve/client.rb +22 -0
  21. data/lib/bitreserve/entities/asset.rb +7 -0
  22. data/lib/bitreserve/entities/auth_token.rb +7 -0
  23. data/lib/bitreserve/entities/base_entity.rb +28 -0
  24. data/lib/bitreserve/entities/card.rb +8 -0
  25. data/lib/bitreserve/entities/contact.rb +7 -0
  26. data/lib/bitreserve/entities/phone.rb +7 -0
  27. data/lib/bitreserve/entities/ticker.rb +7 -0
  28. data/lib/bitreserve/entities/transaction.rb +7 -0
  29. data/lib/bitreserve/entities/user.rb +19 -0
  30. data/lib/bitreserve/helpers.rb +23 -0
  31. data/lib/bitreserve/request.rb +31 -14
  32. data/lib/bitreserve/request_data.rb +7 -0
  33. data/lib/bitreserve/version.rb +1 -1
  34. data/spec/fixtures/vcr_cassettes/me.yml +185 -0
  35. data/spec/fixtures/vcr_cassettes/me/card.yml +61 -0
  36. data/spec/fixtures/vcr_cassettes/me/cards.yml +67 -0
  37. data/spec/fixtures/vcr_cassettes/me/contact.yml +61 -0
  38. data/spec/fixtures/vcr_cassettes/me/contacts.yml +61 -0
  39. data/spec/fixtures/vcr_cassettes/me/created_card.yml +61 -0
  40. data/spec/fixtures/vcr_cassettes/me/created_contact.yml +61 -0
  41. data/spec/fixtures/vcr_cassettes/me/phones.yml +61 -0
  42. data/spec/fixtures/vcr_cassettes/me/transactions/cancel.yml +61 -0
  43. data/spec/fixtures/vcr_cassettes/me/transactions/commit.yml +62 -0
  44. data/spec/fixtures/vcr_cassettes/me/transactions/create.yml +61 -0
  45. data/spec/fixtures/vcr_cassettes/me/transactions/create_waiting_cancel.yml +118 -0
  46. data/spec/fixtures/vcr_cassettes/me/transactions/create_waiting_resend.yml +118 -0
  47. data/spec/fixtures/vcr_cassettes/me/transactions/resend.yml +61 -0
  48. data/spec/fixtures/vcr_cassettes/reserve/transaction.yml +60 -0
  49. data/spec/fixtures/vcr_cassettes/reserve/transactions.yml +60 -0
  50. data/spec/fixtures/vcr_cassettes/tickers.yml +60 -0
  51. data/spec/fixtures/vcr_cassettes/transparency.yml +60 -0
  52. data/spec/integration/api/card_spec.rb +47 -0
  53. data/spec/integration/api/contact_spec.rb +53 -0
  54. data/spec/integration/api/private_transactions_spec.rb +74 -0
  55. data/spec/integration/api/public_transaction_spec.rb +34 -0
  56. data/spec/integration/api/ticker_spec.rb +21 -0
  57. data/spec/integration/api/transparency_spec.rb +21 -0
  58. data/spec/integration/api/user_spec.rb +32 -0
  59. data/spec/spec_helper.rb +19 -1
  60. data/spec/support/vcr.rb +8 -0
  61. data/spec/support/webmock.rb +24 -0
  62. data/spec/unit/api/auth_spec.rb +22 -0
  63. data/spec/unit/api/card_spec.rb +47 -0
  64. data/spec/unit/api/contact_spec.rb +53 -0
  65. data/spec/unit/api/private_transaction_spec.rb +114 -0
  66. data/spec/unit/api/public_transaction_spec.rb +34 -0
  67. data/spec/unit/api/ticker_spec.rb +34 -0
  68. data/spec/unit/api/transparency_spec.rb +21 -0
  69. data/spec/unit/api/user_spec.rb +33 -0
  70. data/spec/unit/auth_request_spec.rb +32 -0
  71. data/spec/unit/client_spec.rb +23 -0
  72. data/spec/unit/entities/base_entity_spec.rb +32 -0
  73. data/spec/unit/entities/user_spec.rb +26 -0
  74. data/spec/unit/helper_spec.rb +37 -0
  75. data/spec/unit/request_spec.rb +58 -0
  76. metadata +136 -8
  77. data/lib/bitreserve/endpoints.rb +0 -5
  78. data/lib/bitreserve/ticker.rb +0 -7
  79. data/spec/request_spec.rb +0 -37
  80. data/spec/ticker_spec.rb +0 -15
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ module Bitreserve
4
+ module Entities
5
+ describe BaseEntity do
6
+ context '#initialize' do
7
+ it 'instantiates instance variables from arguments' do
8
+ entity = BaseEntity.new(key: 'value')
9
+
10
+ expect(entity.instance_variable_get(:@key)).to eq 'value'
11
+ end
12
+
13
+ it 'converts camelCase to snake_case' do
14
+ entity = BaseEntity.new(someKey: 'value')
15
+
16
+ expect(entity.instance_variable_get(:@some_key)).to eq 'value'
17
+ end
18
+ end
19
+
20
+ context '.from_collection' do
21
+ it 'instantiates each of the entities passed in' do
22
+ entity = double('Entity')
23
+ allow(BaseEntity).to receive(:new)
24
+
25
+ BaseEntity.from_collection([entity])
26
+
27
+ expect(BaseEntity).to have_received(:new).with(entity)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ module Bitreserve
4
+ module Entities
5
+ describe User do
6
+ shared_examples 'a collectionable attribute' do |klass|
7
+ attribute_name = klass.to_s.split('::').last.downcase
8
+ attribute_name_plural = attribute_name + 's'
9
+
10
+ it "gets all #{attribute_name} entities from a collection" do
11
+ attribute = double(attribute_name_plural)
12
+ user = User.new attribute_name_plural => attribute
13
+ allow(klass).to receive(:from_collection)
14
+
15
+ user.public_send(attribute_name_plural)
16
+
17
+ expect(klass).to have_received(:from_collection).with(attribute)
18
+ end
19
+ end
20
+
21
+ it_behaves_like 'a collectionable attribute', Phone
22
+ it_behaves_like 'a collectionable attribute', Card
23
+ it_behaves_like 'a collectionable attribute', Transaction
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ module Bitreserve
4
+ describe Helpers do
5
+ context '.undercored_key' do
6
+ it 'underscores a key correctly' do
7
+ underscored_key = Helpers.underscored_key(:firstName)
8
+
9
+ expect(underscored_key).to eq :first_name
10
+ end
11
+ end
12
+
13
+ context '.camelized_key' do
14
+ it 'camelizes a key correctly' do
15
+ camelized_key = Helpers.camelized_key(:first_name)
16
+
17
+ expect(camelized_key).to eq :firstName
18
+ end
19
+ end
20
+
21
+ context '.underscored_hash' do
22
+ it 'underscores a hash correctly' do
23
+ underscored_hash = Helpers.underscored_hash(firstName: 'name', email: 'email')
24
+
25
+ expect(underscored_hash.keys).to match %i(first_name email)
26
+ end
27
+ end
28
+
29
+ context '.camelized_hash' do
30
+ it 'camelizes a hash correctly' do
31
+ camelized_hash = Helpers.camelized_hash(first_name: 'name', email: 'email')
32
+
33
+ expect(camelized_hash.keys).to match %i(firstName email)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ module Bitreserve
4
+ shared_examples 'perform request method' do |method_name|
5
+ let(:object_class) { double('ObjectClass', new: nil, from_collection: nil) }
6
+ let(:request) { spy('request') }
7
+ let(:client) { Bitreserve::Client.new }
8
+
9
+ context ".#{method_name}" do
10
+ it 'makes the correct call for a GET' do
11
+ allow(Request).to receive(:new).and_return(request)
12
+
13
+ Request.public_send(method_name, :get, request_data)
14
+
15
+ expect(request).to have_received(:get)
16
+ end
17
+
18
+ it 'makes the correct call for a POST' do
19
+ allow(Request).to receive(:new).and_return(request)
20
+
21
+ Request.public_send(method_name, :post, request_data)
22
+
23
+ expect(request).to have_received(:post)
24
+ end
25
+
26
+ it 'makes the actual GET call' do
27
+ url = '/some-url'
28
+ WebMockHelpers.bitreserve_stub_request(:get, url)
29
+ allow(Request).to receive(:get).and_call_original
30
+
31
+ Request.public_send(method_name, :get, request_data(url, client))
32
+
33
+ expect(Request).to have_received(:get).with(url, headers: client.authorization_header)
34
+ end
35
+
36
+ it 'makes the actual POST call' do
37
+ url = '/some-url'
38
+ data = { key: 'value' }
39
+ WebMockHelpers.bitreserve_stub_request(:post, url)
40
+ allow(Request).to receive(:post).and_call_original
41
+
42
+ Request.public_send(method_name, :post, request_data(url, client, data))
43
+
44
+ expect(Request).to have_received(:post).with(url, body: data, headers: client.authorization_header)
45
+ end
46
+ end
47
+
48
+ def request_data(url = anything, client = nil, payload = nil, auth = nil)
49
+ client ||= double('Client', authorization_header: {})
50
+ RequestData.new(url, object_class, client.authorization_header, payload, auth)
51
+ end
52
+ end
53
+
54
+ describe Request do
55
+ include_examples 'perform request method', :perform_with_object
56
+ include_examples 'perform request method', :perform_with_objects
57
+ end
58
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitreserve
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Group Buddies
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-22 00:00:00.000000000 Z
11
+ date: 2015-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.13.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: dotenv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: climate_control
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -104,19 +132,79 @@ extra_rdoc_files: []
104
132
  files:
105
133
  - ".gitignore"
106
134
  - ".rubocop.yml"
135
+ - ".travis.yml"
107
136
  - Gemfile
108
137
  - LICENSE.txt
109
138
  - README.md
110
139
  - Rakefile
111
140
  - bitreserve.gemspec
112
141
  - lib/bitreserve.rb
113
- - lib/bitreserve/endpoints.rb
142
+ - lib/bitreserve/api.rb
143
+ - lib/bitreserve/api/auth_token.rb
144
+ - lib/bitreserve/api/card.rb
145
+ - lib/bitreserve/api/contact.rb
146
+ - lib/bitreserve/api/endpoints.rb
147
+ - lib/bitreserve/api/private_transaction.rb
148
+ - lib/bitreserve/api/public_transaction.rb
149
+ - lib/bitreserve/api/ticker.rb
150
+ - lib/bitreserve/api/transparency.rb
151
+ - lib/bitreserve/api/user.rb
152
+ - lib/bitreserve/client.rb
153
+ - lib/bitreserve/entities/asset.rb
154
+ - lib/bitreserve/entities/auth_token.rb
155
+ - lib/bitreserve/entities/base_entity.rb
156
+ - lib/bitreserve/entities/card.rb
157
+ - lib/bitreserve/entities/contact.rb
158
+ - lib/bitreserve/entities/phone.rb
159
+ - lib/bitreserve/entities/ticker.rb
160
+ - lib/bitreserve/entities/transaction.rb
161
+ - lib/bitreserve/entities/user.rb
162
+ - lib/bitreserve/helpers.rb
114
163
  - lib/bitreserve/request.rb
115
- - lib/bitreserve/ticker.rb
164
+ - lib/bitreserve/request_data.rb
116
165
  - lib/bitreserve/version.rb
117
- - spec/request_spec.rb
166
+ - spec/fixtures/vcr_cassettes/me.yml
167
+ - spec/fixtures/vcr_cassettes/me/card.yml
168
+ - spec/fixtures/vcr_cassettes/me/cards.yml
169
+ - spec/fixtures/vcr_cassettes/me/contact.yml
170
+ - spec/fixtures/vcr_cassettes/me/contacts.yml
171
+ - spec/fixtures/vcr_cassettes/me/created_card.yml
172
+ - spec/fixtures/vcr_cassettes/me/created_contact.yml
173
+ - spec/fixtures/vcr_cassettes/me/phones.yml
174
+ - spec/fixtures/vcr_cassettes/me/transactions/cancel.yml
175
+ - spec/fixtures/vcr_cassettes/me/transactions/commit.yml
176
+ - spec/fixtures/vcr_cassettes/me/transactions/create.yml
177
+ - spec/fixtures/vcr_cassettes/me/transactions/create_waiting_cancel.yml
178
+ - spec/fixtures/vcr_cassettes/me/transactions/create_waiting_resend.yml
179
+ - spec/fixtures/vcr_cassettes/me/transactions/resend.yml
180
+ - spec/fixtures/vcr_cassettes/reserve/transaction.yml
181
+ - spec/fixtures/vcr_cassettes/reserve/transactions.yml
182
+ - spec/fixtures/vcr_cassettes/tickers.yml
183
+ - spec/fixtures/vcr_cassettes/transparency.yml
184
+ - spec/integration/api/card_spec.rb
185
+ - spec/integration/api/contact_spec.rb
186
+ - spec/integration/api/private_transactions_spec.rb
187
+ - spec/integration/api/public_transaction_spec.rb
188
+ - spec/integration/api/ticker_spec.rb
189
+ - spec/integration/api/transparency_spec.rb
190
+ - spec/integration/api/user_spec.rb
118
191
  - spec/spec_helper.rb
119
- - spec/ticker_spec.rb
192
+ - spec/support/vcr.rb
193
+ - spec/support/webmock.rb
194
+ - spec/unit/api/auth_spec.rb
195
+ - spec/unit/api/card_spec.rb
196
+ - spec/unit/api/contact_spec.rb
197
+ - spec/unit/api/private_transaction_spec.rb
198
+ - spec/unit/api/public_transaction_spec.rb
199
+ - spec/unit/api/ticker_spec.rb
200
+ - spec/unit/api/transparency_spec.rb
201
+ - spec/unit/api/user_spec.rb
202
+ - spec/unit/auth_request_spec.rb
203
+ - spec/unit/client_spec.rb
204
+ - spec/unit/entities/base_entity_spec.rb
205
+ - spec/unit/entities/user_spec.rb
206
+ - spec/unit/helper_spec.rb
207
+ - spec/unit/request_spec.rb
120
208
  homepage: https://github.com/groupbuddies/bitreserve
121
209
  licenses:
122
210
  - MIT
@@ -142,6 +230,46 @@ signing_key:
142
230
  specification_version: 4
143
231
  summary: A wrapper for the bitreserve API
144
232
  test_files:
145
- - spec/request_spec.rb
233
+ - spec/fixtures/vcr_cassettes/me.yml
234
+ - spec/fixtures/vcr_cassettes/me/card.yml
235
+ - spec/fixtures/vcr_cassettes/me/cards.yml
236
+ - spec/fixtures/vcr_cassettes/me/contact.yml
237
+ - spec/fixtures/vcr_cassettes/me/contacts.yml
238
+ - spec/fixtures/vcr_cassettes/me/created_card.yml
239
+ - spec/fixtures/vcr_cassettes/me/created_contact.yml
240
+ - spec/fixtures/vcr_cassettes/me/phones.yml
241
+ - spec/fixtures/vcr_cassettes/me/transactions/cancel.yml
242
+ - spec/fixtures/vcr_cassettes/me/transactions/commit.yml
243
+ - spec/fixtures/vcr_cassettes/me/transactions/create.yml
244
+ - spec/fixtures/vcr_cassettes/me/transactions/create_waiting_cancel.yml
245
+ - spec/fixtures/vcr_cassettes/me/transactions/create_waiting_resend.yml
246
+ - spec/fixtures/vcr_cassettes/me/transactions/resend.yml
247
+ - spec/fixtures/vcr_cassettes/reserve/transaction.yml
248
+ - spec/fixtures/vcr_cassettes/reserve/transactions.yml
249
+ - spec/fixtures/vcr_cassettes/tickers.yml
250
+ - spec/fixtures/vcr_cassettes/transparency.yml
251
+ - spec/integration/api/card_spec.rb
252
+ - spec/integration/api/contact_spec.rb
253
+ - spec/integration/api/private_transactions_spec.rb
254
+ - spec/integration/api/public_transaction_spec.rb
255
+ - spec/integration/api/ticker_spec.rb
256
+ - spec/integration/api/transparency_spec.rb
257
+ - spec/integration/api/user_spec.rb
146
258
  - spec/spec_helper.rb
147
- - spec/ticker_spec.rb
259
+ - spec/support/vcr.rb
260
+ - spec/support/webmock.rb
261
+ - spec/unit/api/auth_spec.rb
262
+ - spec/unit/api/card_spec.rb
263
+ - spec/unit/api/contact_spec.rb
264
+ - spec/unit/api/private_transaction_spec.rb
265
+ - spec/unit/api/public_transaction_spec.rb
266
+ - spec/unit/api/ticker_spec.rb
267
+ - spec/unit/api/transparency_spec.rb
268
+ - spec/unit/api/user_spec.rb
269
+ - spec/unit/auth_request_spec.rb
270
+ - spec/unit/client_spec.rb
271
+ - spec/unit/entities/base_entity_spec.rb
272
+ - spec/unit/entities/user_spec.rb
273
+ - spec/unit/helper_spec.rb
274
+ - spec/unit/request_spec.rb
275
+ has_rdoc:
@@ -1,5 +0,0 @@
1
- module Bitreserve
2
- module Endpoints
3
- TICKER = '/ticker'
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- module Bitreserve
2
- class Ticker
3
- def self.all
4
- Request.perform(:get, Endpoints::TICKER)
5
- end
6
- end
7
- end
data/spec/request_spec.rb DELETED
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
- require 'webmock/rspec'
3
- WebMock.disable_net_connect!
4
-
5
- module Bitreserve
6
- describe Request do
7
- let(:request) { spy('request') }
8
-
9
- context '.perform' do
10
- it 'makes the correct call for a GET' do
11
- allow(Request).to receive(:new).and_return(request)
12
-
13
- Request.perform(:get, '/some-url')
14
-
15
- expect(request).to have_received(:get)
16
- end
17
-
18
- it 'makes the correct call for a POST' do
19
- allow(Request).to receive(:new).and_return(request)
20
-
21
- Request.perform(:post, '/some-url')
22
-
23
- expect(request).to have_received(:post)
24
- end
25
-
26
- it 'makes the actual call' do
27
- url = '/some-url'
28
- stub_request(:get, Request.base_uri + url)
29
- allow(Request).to receive(:get).and_call_original
30
-
31
- Request.perform(:get, url)
32
-
33
- expect(Request).to have_received(:get).with(url, {})
34
- end
35
- end
36
- end
37
- end
data/spec/ticker_spec.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Bitreserve
4
- describe Ticker do
5
- context '.all' do
6
- it 'gets all the tickers' do
7
- allow(Request).to receive(:perform)
8
-
9
- Ticker.all
10
-
11
- expect(Request).to have_received(:perform).with(:get, Endpoints::TICKER)
12
- end
13
- end
14
- end
15
- end