coinmarketcap.rb 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9409ddfa64039ff7b7d59474283bd3a5053acbfd9094c4a6df984611ec8bc9a9
4
- data.tar.gz: 5432428de98a131ba5210c1b0b62bfe56feaee316f2986e4d0a8285532a87413
3
+ metadata.gz: 062b9e78e37727a2772e8d0264347b7ae0a96379059aa3d7e1f7411b34a444f5
4
+ data.tar.gz: d502d3d41cdc431475dfb0e6531ebfa0108f4ffa734fae2d8c12910f03cca5ee
5
5
  SHA512:
6
- metadata.gz: 0ace0916f6a52e6539de74818628ed9334dcfcccee327c5d52a57603563ec0642833537f3c4d8b19e1c71daaa26b95374aa829d88d72bf41b727faa11cac0d75
7
- data.tar.gz: 938dd5c24f42f0d18b7e9b80e309f57fa01543a0278f779c19c47c7bac660d6c7a17b5e9ca84bd507dde0f8c4b81eca5784f3305415eed4d2f7af2992bdf0742
6
+ metadata.gz: 2e0e470c2dbc0494817f5b5fae1ef0e9ec546f4201ab56cd0729096413a6b5860b1e1cdf6864e7edf523a6826044e3be7f97f446cca9bb42b58430db7fc10480
7
+ data.tar.gz: 5afc30240b2f1be31cfc65be047a83e37c5217089a2fa2f90f6b51ccb1b2fdb3c67102eeba3b2a5b9597624c2ec4edbf355f3674ce6dcd32118d776cf6b3c4fc
data/Gemfile CHANGED
@@ -6,4 +6,5 @@ group :development, :test do
6
6
  gem 'minitest'
7
7
  gem 'minitest-spec-context'
8
8
  gem 'vcr'
9
+ gem 'webmock'
9
10
  end
data/README.md CHANGED
@@ -69,7 +69,7 @@ coinmarketcap_client.info(id: 123)
69
69
  coinmarketcap_client.latest_listings
70
70
  ```
71
71
 
72
- ### Latest OHLCV Price Data
72
+ ### Latest Price Data (OHLCV)
73
73
  ```ruby
74
74
  coinmarketcap_client.latest_price_data
75
75
  ```
@@ -4,7 +4,7 @@ Gem::Specification.new do |spec|
4
4
  spec.name = 'coinmarketcap.rb'
5
5
 
6
6
  spec.version = CoinMarketCap::VERSION
7
- spec.date = '2025-03-30'
7
+ spec.date = '2025-05-13'
8
8
 
9
9
  spec.summary = "Access the coinmarketcap.com API with Ruby."
10
10
  spec.description = "Access the coinmarketcap.com API with Ruby."
@@ -47,8 +47,8 @@ module CoinMarketCap
47
47
  v1_client.map
48
48
  end
49
49
 
50
- def latest_listings
51
- v2_client.market_pairs_latest
50
+ def latest_listings(**args)
51
+ v2_client.market_pairs_latest(args)
52
52
  end
53
53
 
54
54
  def latest_price_data
@@ -55,8 +55,8 @@ module CoinMarketCap
55
55
  handle_response(response)
56
56
  end
57
57
 
58
- def listings_latest
59
- response = get(path: '/listings/latest')
58
+ def listings_latest(**args)
59
+ response = get(path: '/listings/latest', args: args)
60
60
  handle_response(response)
61
61
  end
62
62
 
@@ -32,8 +32,8 @@ module CoinMarketCap
32
32
  handle_response(response)
33
33
  end
34
34
 
35
- def market_pairs_latest
36
- response = get(path: '/market-pairs/latest')
35
+ def market_pairs_latest(**args)
36
+ response = get(path: '/market-pairs/latest', args: args)
37
37
  handle_response(response)
38
38
  end
39
39
 
@@ -2,5 +2,5 @@
2
2
  # CoinMarketCap::VERSION
3
3
 
4
4
  module CoinMarketCap
5
- VERSION = '0.4.1'
5
+ VERSION = '0.5.0'
6
6
  end
@@ -67,12 +67,26 @@ describe CoinMarketCap::V1::Client do
67
67
  end
68
68
 
69
69
  describe "#listings_latest" do
70
- it "returns an array of latest prices" do
71
- VCR.use_cassette('v1/cryptocurrency/listings/latest') do
72
- response = client.listings_latest
73
- _(response).must_include('data')
74
- _(response['data']).must_be_kind_of(Array)
75
- _(response['data'][0]).must_be_kind_of(Hash)
70
+ context "WITHOUT args" do
71
+ it "returns an array of latest prices" do
72
+ VCR.use_cassette('v1/cryptocurrency/listings/latest') do
73
+ response = client.listings_latest
74
+ _(response).must_include('data')
75
+ _(response['data']).must_be_kind_of(Array)
76
+ _(response['data'][0]).must_be_kind_of(Hash)
77
+ end
78
+ end
79
+ end
80
+
81
+ context "#WITH args" do
82
+ it "returns an array of latest prices" do
83
+ VCR.use_cassette('v1/cryptocurrency/listings/latest_with_args') do
84
+ response = client.listings_latest(limit: 10)
85
+ _(response).must_include('data')
86
+ _(response['data']).must_be_kind_of(Array)
87
+ _(response['data'].count).must_equal(10)
88
+ _(response['data'][0]).must_be_kind_of(Hash)
89
+ end
76
90
  end
77
91
  end
78
92
  end
@@ -15,12 +15,26 @@ describe CoinMarketCap::V2::Client do
15
15
  end
16
16
 
17
17
  describe "#market_pairs_latest" do
18
- it "retrieves the latest market pairs" do
19
- VCR.use_cassette('v2/cryptocurrency/market-pairs/latest') do
20
- assert_raises CoinMarketCap::Error do
21
- response = client.market_pairs_latest
22
- # _(response).must_include('data')
23
- _(JSON.parse(response.body).dig('status', 'error_message')).must_equal "Your API Key subscription plan doesn't support this endpoint."
18
+ context "WITHOUT args" do
19
+ it "retrieves the latest market pairs" do
20
+ VCR.use_cassette('v2/cryptocurrency/market-pairs/latest') do
21
+ assert_raises CoinMarketCap::Error do
22
+ response = client.market_pairs_latest
23
+ # _(response).must_include('data')
24
+ _(JSON.parse(response.body).dig('status', 'error_message')).must_equal "Your API Key subscription plan doesn't support this endpoint."
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ context "#WITH args" do
31
+ it "retrieves the latest market pairs" do
32
+ VCR.use_cassette('v2/cryptocurrency/market-pairs/latest_with_args') do
33
+ assert_raises CoinMarketCap::Error do
34
+ response = client.market_pairs_latest(limit: 10)
35
+ # _(response).must_include('data')
36
+ _(JSON.parse(response.body).dig('status', 'error_message')).must_equal "Your API Key subscription plan doesn't support this endpoint."
37
+ end
24
38
  end
25
39
  end
26
40
  end
data/test/client_test.rb CHANGED
@@ -131,13 +131,26 @@ describe CoinMarketCap::Client do
131
131
  end
132
132
 
133
133
  describe "#latest_listings" do
134
- it "calls the V2 client" do
135
- mocked_client = Minitest::Mock.new
136
- mocked_client.expect(:market_pairs_latest, true, [])
137
- client.stub :v2_client, mocked_client do
138
- client.latest_listings
134
+ context "WITHOUT args" do
135
+ it "calls the V2 client" do
136
+ mocked_client = Minitest::Mock.new
137
+ mocked_client.expect(:market_pairs_latest, true, [{}])
138
+ client.stub :v2_client, mocked_client do
139
+ client.latest_listings
140
+ end
141
+ mocked_client.verify
142
+ end
143
+ end
144
+
145
+ context "WITH args" do
146
+ it "calls the V2 client" do
147
+ mocked_client = Minitest::Mock.new
148
+ mocked_client.expect(:market_pairs_latest, true, [{limit: 10}])
149
+ client.stub :v2_client, mocked_client do
150
+ client.latest_listings(limit: 10)
151
+ end
152
+ mocked_client.verify
139
153
  end
140
- mocked_client.verify
141
154
  end
142
155
  end
143
156
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coinmarketcap.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoran
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-30 00:00:00.000000000 Z
10
+ date: 2025-05-13 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: http.rb
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  requirements: []
64
- rubygems_version: 3.6.6
64
+ rubygems_version: 3.6.8
65
65
  specification_version: 4
66
66
  summary: Access the coinmarketcap.com API with Ruby.
67
67
  test_files: []