bitreserve 0.0.3 → 0.1.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 (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