fitgem 0.9.0 → 0.10.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
  SHA1:
3
- metadata.gz: 76633b7e4a93d47e6f38b05ea29bb61aa1bc99a7
4
- data.tar.gz: 8c9e95113e9fae7d0ac8da7794e57e001f3a7949
3
+ metadata.gz: 95d4e7ae922736d2f4d8093c43988e563c2a2fae
4
+ data.tar.gz: 1c018275740218d4adc237efd254740cf9656153
5
5
  SHA512:
6
- metadata.gz: 27d833fae2901dad5e2f44c69183c020c8685ddd1c7989c8d0c4d07e8744e123a045059dc22b8862a4c4ed19a397694abcaa3cfb26b11601cdd0a8ee41dfdcb2
7
- data.tar.gz: e995db140ef78a18144ae95673fb0dfa6192392f3edb94f91a1e0f65ad14099b925f3e4d44a97c6b0df0c02ec7682b67da18aa032fe8751075f0b9112c121595
6
+ metadata.gz: ff191fe963d6291b1ed8cf97be3b606e0dc5a27fab0696d2927d012d7774760b61cbe7064c207194b2fcd43e7248cb9c9a8f767661e0e6d2974648d02d187f06
7
+ data.tar.gz: fee32faa7cfa3137dd711f71a1461d04fa1a30cc7951e03674d1da8b81adedac05be14c92f68ea45f6eba546878ee4e1362df08d4d78cc668fd584e50dca4a4d
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Fitgem [![Build Status](https://secure.travis-ci.org/whazzmaster/fitgem.png)](http://travis-ci.org/whazzmaster/fitgem)
2
2
 
3
- This gem provides access to [fitbit.com](http://www.fitbit.com) data through [their REST API](http://dev.fitbit.com). Fitgem can pull data with or without a valid OAUth access_token. Without an access_token you can only gather data that a user has denoted as 'public'. However, if an access_token is provided then all exposed data can be gathered for the logged-in account.
3
+ Provides access to [fitbit.com](http://www.fitbit.com) data through [their REST API](http://dev.fitbit.com). Fitgem can pull data with or without a valid OAUth access_token. Without an access_token you can only gather data that a user has denoted as 'public'. However, if an access_token is provided then all exposed data can be gathered for the logged-in account.
4
4
 
5
5
  The [Fitbit API](https://wiki.fitbit.com/display/API/Fitbit+API) is currently in BETA and is under development to extend its reach. As the API evolves and is enhanced it's a priority to mirror the functionality in the gem, and **pull requests** are appreciated if you see gaps in API support.
6
6
 
@@ -3,6 +3,14 @@
3
3
 
4
4
  # fitgem changelog
5
5
 
6
+ ## v0.10.0
7
+
8
+ #### 2014-08-08 Zachery Moneypenny <fitgem@whazzmaster.com>
9
+
10
+ * Updates default test framework to RSpec 3
11
+ * Updates library to use SSL exclusively when hitting the Fitbit REST API. Fitbit is restricting access to its API via https only on November 3rd, 2014. See [issue #30](https://github.com/whazzmaster/fitgem/issues/30) for more information. This should be transparent to end users of fitgem, as the library simply ignores the :ssl option in the Client constructor and defaults to https everywhere.
12
+ * The previously-deprecated `weekly_leaderboard` and `monthly_leaderboard` methods have now been updated to throw a `DeprecatedApiError` rather than warning about deprecation. These methods will be removed in v1.0.
13
+
6
14
  ## v0.9.0
7
15
 
8
16
  #### 2014-02-11 Zachery Moneypenny <fitgem@whazzmaster.com>
@@ -1,26 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
2
+ $:.push File.expand_path('../lib', __FILE__)
3
3
  $:.push File.join(File.dirname(__FILE__), '.', 'lib')
4
4
 
5
5
  require 'fitgem/version'
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "fitgem"
8
+ s.name = 'fitgem'
9
9
  s.version = Fitgem::VERSION
10
10
  s.platform = Gem::Platform::RUBY
11
- s.authors = ["Zachery Moneypenny"]
12
- s.email = ["fitgem@whazzmaster.com"]
13
- s.homepage = "http://github.com/whazzmaster/fitgem"
11
+ s.authors = ['Zachery Moneypenny']
12
+ s.email = ['fitgem@whazzmaster.com']
13
+ s.homepage = 'http://github.com/whazzmaster/fitgem'
14
14
  s.summary = %q{OAuth client library to the data on fitbit.com}
15
15
  s.description = %q{A client library to send and retrieve workout, weight, and diet data from fitbit.com}
16
16
 
17
- s.rubyforge_project = "fitgem"
17
+ s.rubyforge_project = 'fitgem'
18
18
 
19
- s.add_dependency "oauth"
20
- s.add_development_dependency "rake"
21
- s.add_development_dependency "rspec"
22
- s.add_development_dependency "yard"
23
- s.add_development_dependency "rdiscount"
19
+ s.add_dependency 'oauth'
20
+ s.add_development_dependency 'rake'
21
+ s.add_development_dependency 'rspec', '~> 3.0.0'
22
+ s.add_development_dependency 'yard'
23
+ s.add_development_dependency 'rdiscount'
24
24
 
25
25
  s.files = [
26
26
  '.gitignore',
@@ -69,5 +69,5 @@ Gem::Specification.new do |s|
69
69
  'spec/fitgem_helper_spec.rb',
70
70
  'spec/fitgem_constructor_spec.rb'
71
71
  ]
72
- s.require_paths = ["lib"]
72
+ s.require_paths = ['lib']
73
73
  end
@@ -30,11 +30,6 @@ module Fitgem
30
30
  # @return [String]
31
31
  attr_accessor :api_version
32
32
 
33
- # Sets or gets the ssl settings
34
- #
35
- # @return [Boolean]
36
- attr_accessor :ssl
37
-
38
33
  # Sets or gets the api unit system to be used in API calls
39
34
  #
40
35
  # @return [String]
@@ -103,8 +98,6 @@ module Fitgem
103
98
  @consumer_key = opts[:consumer_key]
104
99
  @consumer_secret = opts[:consumer_secret]
105
100
 
106
- @ssl = opts[:ssl]
107
-
108
101
  @token = opts[:token]
109
102
  @secret = opts[:secret]
110
103
 
@@ -182,19 +175,12 @@ module Fitgem
182
175
  consumer.options[:authorize_path] = '/oauth/authenticate'
183
176
  request_token(opts)
184
177
  end
185
-
186
- # The protocol to be used for the API requests
187
- #
188
- # @return [String], 'http', or 'https' if ssl == true
189
- def protocol
190
- ssl ? "https" : "http"
191
- end
192
178
 
193
179
  private
194
180
 
195
181
  def consumer
196
182
  @consumer ||= OAuth::Consumer.new(@consumer_key, @consumer_secret, {
197
- :site => "#{protocol}://api.fitbit.com",
183
+ :site => 'https://api.fitbit.com',
198
184
  :proxy => @proxy
199
185
  })
200
186
  end
@@ -22,4 +22,7 @@ module Fitgem
22
22
 
23
23
  class ConnectionRequiredError < Exception
24
24
  end
25
+
26
+ class DeprecatedApiError < Exception
27
+ end
25
28
  end
@@ -25,8 +25,7 @@ module Fitgem
25
25
  #
26
26
  # @deprecated Monthly leaderboards are no longer available from Fitbit. Please update to use {#leaderboard}
27
27
  def monthly_leaderboard
28
- warn '[DEPRECATED] monthly_leaderboard will be removed in v1.0. Update to using leaderboard method.'
29
- leaderboard
28
+ raise DeprecatedApiError, 'Fitbit no longer exposes a monthly leaderboard. See https://wiki.fitbit.com/display/API/API-Get-Friends-Leaderboard for more information. Use #leaderboard() instead.'
30
29
  end
31
30
 
32
31
  # Get the leaderboard of friends' weekly activities
@@ -35,8 +34,7 @@ module Fitgem
35
34
  #
36
35
  # @deprecated Please update to use {#leaderboard}
37
36
  def weekly_leaderboard
38
- warn '[DEPRECATED] weekly_leaderboard will be removed in v1.0. Update to using leaderboard method.'
39
- leaderboard
37
+ raise DeprecatedApiError, 'Fitbit now only exposes a weekly leaderboard, Use #leaderboard() instead.'
40
38
  end
41
39
 
42
40
  # ==========================================
@@ -16,7 +16,7 @@ module Fitgem
16
16
 
17
17
  # Creates a notification subscription
18
18
  #
19
- # @note You must check the HTTP response code to check the status of the request to add a subscription. See {https://wiki.fitbit.com/display/API/Subscriptions-API} for information about what the codes mean.
19
+ # @note You must check the HTTP response code to check the status of the request to add a subscription. See {https://wiki.fitbit.com/display/API/Fitbit+Subscriptions+API} for information about what the codes mean.
20
20
  #
21
21
  # @param [Hash] opts The notification subscription data
22
22
  # @option opts [Symbol] :type The type of subscription (valid
@@ -33,7 +33,7 @@ module Fitgem
33
33
 
34
34
  # Removes a notification subscription
35
35
  #
36
- # @note You must check the HTTP response code to check the status of the request to remove a subscription. See {https://wiki.fitbit.com/display/API/Subscriptions-API} for information about what the codes mean.
36
+ # @note You must check the HTTP response code to check the status of the request to remove a subscription. See {https://wiki.fitbit.com/display/API/Fitbit+Subscriptions+API} for information about what the codes mean.
37
37
  #
38
38
  # @param [Hash] opts The notification subscription data
39
39
  # @option opts [Symbol] :type The type of subscription to remove;
@@ -1,3 +1,3 @@
1
1
  module Fitgem
2
- VERSION = '0.9.0'
2
+ VERSION = '0.10.0'
3
3
  end
@@ -11,12 +11,12 @@ describe Fitgem::Client do
11
11
  describe "#construct_date_range_fragment" do
12
12
  it 'should format the correct URI fragment based on a base date and end date' do
13
13
  frag = @client.construct_date_range_fragment({:base_date => '2011-03-07', :end_date => '2011-03-14'})
14
- frag.should == 'date/2011-03-07/2011-03-14'
14
+ expect(frag).to eq 'date/2011-03-07/2011-03-14'
15
15
  end
16
16
 
17
17
  it 'should format the correct URI fragment based on a base date and period' do
18
18
  frag = @client.construct_date_range_fragment({:base_date => '2011-03-07', :period => '7d'})
19
- frag.should == 'date/2011-03-07/7d'
19
+ expect(frag).to eq 'date/2011-03-07/7d'
20
20
  end
21
21
 
22
22
  it 'should raise an error unless there is a base date AND either a period or an end date' do
@@ -37,28 +37,28 @@ describe Fitgem::Client do
37
37
  span_start = DateTime.new(1997, 4, 18, 9, 30, 30)
38
38
  span_end = DateTime.new(1999, 10, 3, 15, 30, 30)
39
39
  frag = @client.construct_date_range_fragment base_date: span_start, end_date: span_end
40
- frag.should eq('date/1997-04-18/1999-10-03')
40
+ expect(frag).to eq 'date/1997-04-18/1999-10-03'
41
41
  end
42
42
  end
43
43
 
44
44
  describe "#format_date" do
45
45
  it "accepts DateTime objects" do
46
46
  date = DateTime.strptime('2011-03-19','%Y-%m-%d')
47
- @client.format_date(date).should == '2011-03-19'
47
+ expect(@client.format_date(date)).to eq '2011-03-19'
48
48
  end
49
49
 
50
50
  it "accepts strings in YYYY-MM-DD format" do
51
- @client.format_date('2011-03-19').should == '2011-03-19'
51
+ expect(@client.format_date('2011-03-19')).to eq '2011-03-19'
52
52
  end
53
53
 
54
54
  it "accepts the string 'today' to denote the current date" do
55
55
  today = Date.today.strftime("%Y-%m-%d")
56
- @client.format_date('today').should == today
56
+ expect(@client.format_date('today')).to eq today
57
57
  end
58
58
 
59
59
  it "accepts the string 'yesterday' to denote the day previous to today" do
60
60
  yesterday = (Date.today-1).strftime("%Y-%m-%d")
61
- @client.format_date('yesterday').should == yesterday
61
+ expect(@client.format_date('yesterday')).to eq yesterday
62
62
  end
63
63
 
64
64
  it "rejects strings that are not in YYY-MM-DD format" do
@@ -87,47 +87,47 @@ describe Fitgem::Client do
87
87
  context "without a timezone" do
88
88
  it "accepts DateTime objects" do
89
89
  time = DateTime.parse("3rd Feb 2001 04:05:06 PM")
90
- @client.format_time(time).should == "16:05"
90
+ expect(@client.format_time(time)).to eq "16:05"
91
91
  end
92
92
 
93
93
  it "accepts Time objects" do
94
94
  time = Time.mktime 2012, 1, 20, 13, 33, 30
95
- @client.format_time(time).should == "13:33"
95
+ expect(@client.format_time(time)).to eq "13:33"
96
96
  end
97
97
 
98
98
  it "accepts the string 'now' to denote the current localtime" do
99
99
  now = DateTime.now
100
- @client.format_time('now').should == now.strftime("%H:%M")
100
+ expect(@client.format_time('now')).to eq now.strftime("%H:%M")
101
101
  end
102
102
 
103
103
  it "accepts strings in HH:mm format" do
104
104
  time = "04:20"
105
- @client.format_time(time).should == "04:20"
105
+ expect(@client.format_time(time)).to eq "04:20"
106
106
  end
107
107
  end
108
108
 
109
109
  context "with a timezone" do
110
110
  it "accepts DateTime objects" do
111
111
  time = DateTime.parse("3rd Feb 2001 04:05:06 PM UTC")
112
- @client.format_time(time, include_timezone: true).should == "16:05+00:00"
112
+ expect(@client.format_time(time, include_timezone: true)).to eq "16:05+00:00"
113
113
  end
114
114
 
115
115
  it "accepts Time objects" do
116
116
  time = Time.new 2012, 1, 20, 13, 33, 30, "+00:00"
117
- @client.format_time(time, include_timezone: true).should == "13:33+00:00"
117
+ expect(@client.format_time(time, include_timezone: true)).to eq "13:33+00:00"
118
118
  end
119
119
 
120
120
  it "accepts the string 'now' to denote the current localtime" do
121
121
  now = DateTime.now
122
- @client.format_time('now', include_timezone: true).should == now.strftime("%H:%M%:z")
122
+ expect(@client.format_time('now', include_timezone: true)).to eq now.strftime("%H:%M%:z")
123
123
  end
124
124
 
125
125
  it "accepts strings in HH:mm format" do
126
126
  datetime = DateTime.parse("26th Apr 2000 09:27:00 +08:00")
127
- DateTime.stub(:now).and_return datetime
127
+ allow(DateTime).to receive(:now).and_return datetime
128
128
 
129
129
  time = "04:20"
130
- @client.format_time(time, include_timezone: true).should == "04:20+08:00"
130
+ expect(@client.format_time(time, include_timezone: true)).to eq "04:20+08:00"
131
131
  end
132
132
  end
133
133
 
@@ -195,49 +195,49 @@ describe Fitgem::Client do
195
195
 
196
196
  it "returns the correct values when the unit system is Fitgem::ApiUnitSystem.US" do
197
197
  @client.api_unit_system = Fitgem::ApiUnitSystem.US
198
- @client.label_for_measurement(:duration, false).should == "milliseconds"
199
- @client.label_for_measurement(:distance, false).should == "miles"
200
- @client.label_for_measurement(:elevation, false).should == "feet"
201
- @client.label_for_measurement(:height, false).should == "inches"
202
- @client.label_for_measurement(:weight, false).should == "pounds"
203
- @client.label_for_measurement(:measurements, false).should == "inches"
204
- @client.label_for_measurement(:liquids, false).should == "fl oz"
205
- @client.label_for_measurement(:blood_glucose, false).should == "mg/dL"
198
+ expect(@client.label_for_measurement(:duration, false)).to eq "milliseconds"
199
+ expect(@client.label_for_measurement(:distance, false)).to eq "miles"
200
+ expect(@client.label_for_measurement(:elevation, false)).to eq "feet"
201
+ expect(@client.label_for_measurement(:height, false)).to eq "inches"
202
+ expect(@client.label_for_measurement(:weight, false)).to eq "pounds"
203
+ expect(@client.label_for_measurement(:measurements, false)).to eq "inches"
204
+ expect(@client.label_for_measurement(:liquids, false)).to eq "fl oz"
205
+ expect(@client.label_for_measurement(:blood_glucose, false)).to eq "mg/dL"
206
206
  end
207
207
 
208
208
  it "returns the correct values when the unit system is Fitgem::ApiUnitSystem.UK" do
209
209
  @client.api_unit_system = Fitgem::ApiUnitSystem.UK
210
- @client.label_for_measurement(:duration, false).should == "milliseconds"
211
- @client.label_for_measurement(:distance, false).should == "kilometers"
212
- @client.label_for_measurement(:elevation, false).should == "meters"
213
- @client.label_for_measurement(:height, false).should == "centimeters"
214
- @client.label_for_measurement(:weight, false).should == "stone"
215
- @client.label_for_measurement(:measurements, false).should == "centimeters"
216
- @client.label_for_measurement(:liquids, false).should == "mL"
217
- @client.label_for_measurement(:blood_glucose, false).should == "mmol/l"
210
+ expect(@client.label_for_measurement(:duration, false)).to eq "milliseconds"
211
+ expect(@client.label_for_measurement(:distance, false)).to eq "kilometers"
212
+ expect(@client.label_for_measurement(:elevation, false)).to eq "meters"
213
+ expect(@client.label_for_measurement(:height, false)).to eq "centimeters"
214
+ expect(@client.label_for_measurement(:weight, false)).to eq "stone"
215
+ expect(@client.label_for_measurement(:measurements, false)).to eq "centimeters"
216
+ expect(@client.label_for_measurement(:liquids, false)).to eq "mL"
217
+ expect(@client.label_for_measurement(:blood_glucose, false)).to eq "mmol/l"
218
218
  end
219
219
 
220
220
  it "returns the correct values when the unit system is Fitgem::ApiUnitSystem.METRIC" do
221
221
  @client.api_unit_system = Fitgem::ApiUnitSystem.METRIC
222
- @client.label_for_measurement(:duration, false).should == "milliseconds"
223
- @client.label_for_measurement(:distance, false).should == "kilometers"
224
- @client.label_for_measurement(:elevation, false).should == "meters"
225
- @client.label_for_measurement(:height, false).should == "centimeters"
226
- @client.label_for_measurement(:weight, false).should == "kilograms"
227
- @client.label_for_measurement(:measurements, false).should == "centimeters"
228
- @client.label_for_measurement(:liquids, false).should == "mL"
229
- @client.label_for_measurement(:blood_glucose, false).should == "mmol/l"
222
+ expect(@client.label_for_measurement(:duration, false)).to eq "milliseconds"
223
+ expect(@client.label_for_measurement(:distance, false)).to eq "kilometers"
224
+ expect(@client.label_for_measurement(:elevation, false)).to eq "meters"
225
+ expect(@client.label_for_measurement(:height, false)).to eq "centimeters"
226
+ expect(@client.label_for_measurement(:weight, false)).to eq "kilograms"
227
+ expect(@client.label_for_measurement(:measurements, false)).to eq "centimeters"
228
+ expect(@client.label_for_measurement(:liquids, false)).to eq "mL"
229
+ expect(@client.label_for_measurement(:blood_glucose, false)).to eq "mmol/l"
230
230
  end
231
231
 
232
232
  context "when respecting the user's unit measurement preferences" do
233
233
  before(:each) do
234
- @client.stub(:connected?).and_return(true)
235
- @client.stub(:user_info).and_return({"user" => {"distanceUnit"=>"en_GB", "glucoseUnit"=>"en_GB", "heightUnit"=>"en_GB", "waterUnit"=>"METRIC", "weightUnit"=>"en_GB"}})
234
+ allow(@client).to receive(:connected?).and_return(true)
235
+ allow(@client).to receive(:user_info).and_return({"user" => {"distanceUnit"=>"en_GB", "glucoseUnit"=>"en_GB", "heightUnit"=>"en_GB", "waterUnit"=>"METRIC", "weightUnit"=>"en_GB"}})
236
236
  end
237
237
 
238
238
  it "returns the correct overridden measurement label" do
239
239
  @client.api_unit_system = Fitgem::ApiUnitSystem.US
240
- @client.label_for_measurement(:distance).should == "kilometers"
240
+ expect(@client.label_for_measurement(:distance)).to eq "kilometers"
241
241
  end
242
242
  end
243
243
  end
@@ -8,18 +8,18 @@ describe Fitgem::Client do
8
8
 
9
9
  describe "#subscriptions" do
10
10
  before(:each) do
11
- @client.stub :get
11
+ allow(@client).to receive(:get)
12
12
  end
13
13
 
14
14
  it "calls #make_headers to create the headers for the API call" do
15
15
  opts = { :subscriber_id => "5555", :type => :all }
16
- @client.should_receive(:make_headers).with({:type=>:all, :subscriber_id=>"5555"})
16
+ expect(@client).to receive(:make_headers).with({:type=>:all, :subscriber_id=>"5555"})
17
17
  @client.subscriptions(opts)
18
18
  end
19
19
 
20
20
  it "calls #get with the correct url and headers" do
21
21
  opts = { :subscriber_id => "5555", :type => :all }
22
- @client.should_receive(:get).with("/user/-/apiSubscriptions.json", {"X-Fitbit-Subscriber-Id"=>"5555"})
22
+ expect(@client).to receive(:get).with("/user/-/apiSubscriptions.json", {"X-Fitbit-Subscriber-Id"=>"5555"})
23
23
  @client.subscriptions(opts)
24
24
  end
25
25
  end
@@ -27,68 +27,68 @@ describe Fitgem::Client do
27
27
  describe "#create_subscription" do
28
28
  before(:each) do
29
29
  @resp = OpenStruct.new
30
- @client.stub(:raw_post).and_return(@resp)
30
+ allow(@client).to receive(:raw_post).and_return(@resp)
31
31
  end
32
32
 
33
33
  it "adds the :use_subscription_id flag and calls #make_headers" do
34
34
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320" }
35
- @client.should_receive(:make_headers).with({ :subscriber_id => "5555", :type => :all, :subscription_id => "320"})
35
+ expect(@client).to receive(:make_headers).with({ :subscriber_id => "5555", :type => :all, :subscription_id => "320"})
36
36
  @client.create_subscription(opts)
37
37
  end
38
38
 
39
39
  it "calls #raw_post with the correct url and headers for :all collection type" do
40
40
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320", :use_subscription_id => true }
41
- @client.should_receive(:raw_post).once.with("/user/-/apiSubscriptions/320.json", "", {"X-Fitbit-Subscriber-Id"=>"5555"})
41
+ expect(@client).to receive(:raw_post).once.with("/user/-/apiSubscriptions/320.json", "", {"X-Fitbit-Subscriber-Id"=>"5555"})
42
42
  @client.create_subscription(opts)
43
43
  end
44
44
 
45
45
  it "calls #raw_post with the correct url and headers for :sleep collection type" do
46
46
  opts = { :subscriber_id => "5555", :type => :sleep, :subscription_id => "320", :use_subscription_id => true }
47
- @client.should_receive(:raw_post).once.with("/user/-/sleep/apiSubscriptions/320.json", "", {"X-Fitbit-Subscriber-Id"=>"5555"})
47
+ expect(@client).to receive(:raw_post).once.with("/user/-/sleep/apiSubscriptions/320.json", "", {"X-Fitbit-Subscriber-Id"=>"5555"})
48
48
  @client.create_subscription(opts)
49
49
  end
50
50
 
51
51
  it "calls #extract_response_body to get the JSON body" do
52
52
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320", :use_subscription_id => true }
53
- @client.should_receive(:extract_response_body)
53
+ expect(@client).to receive(:extract_response_body)
54
54
  @client.create_subscription(opts)
55
55
  end
56
56
 
57
57
  it "returns the code and the JSON body in an array" do
58
58
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320", :use_subscription_id => true }
59
- @resp.should_receive(:code)
60
- @client.create_subscription(opts).should be_a(Array)
59
+ expect(@resp).to receive(:code)
60
+ expect(@client.create_subscription(opts)).to be_a(Array)
61
61
  end
62
62
  end
63
63
 
64
64
  describe "#remove_subscription" do
65
65
  before(:each) do
66
66
  @resp = OpenStruct.new
67
- @client.stub(:raw_delete).and_return(@resp)
67
+ allow(@client).to receive(:raw_delete).and_return(@resp)
68
68
  end
69
69
 
70
70
  it "adds the :use_subscription_id flag and calls #make_headers" do
71
71
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320" }
72
- @client.should_receive(:make_headers).with({ :subscriber_id => "5555", :type => :all, :subscription_id => "320" })
72
+ expect(@client).to receive(:make_headers).with({ :subscriber_id => "5555", :type => :all, :subscription_id => "320" })
73
73
  @client.remove_subscription(opts)
74
74
  end
75
75
 
76
76
  it "calls #raw_delete with the correct url and headers for :all collection type" do
77
77
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320", :use_subscription_id => true }
78
- @client.should_receive(:raw_delete).once.with("/user/-/apiSubscriptions/320.json", {"X-Fitbit-Subscriber-Id"=>"5555"})
78
+ expect(@client).to receive(:raw_delete).once.with("/user/-/apiSubscriptions/320.json", {"X-Fitbit-Subscriber-Id"=>"5555"})
79
79
  @client.remove_subscription(opts)
80
80
  end
81
81
 
82
82
  it "calls #extract_response_body to get the JSON body" do
83
83
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320", :use_subscription_id => true }
84
- @client.should_receive(:extract_response_body)
84
+ expect(@client).to receive(:extract_response_body)
85
85
  @client.remove_subscription(opts)
86
86
  end
87
87
 
88
88
  it "returns the code and the JSON body in an array" do
89
89
  opts = { :subscriber_id => "5555", :type => :all, :subscription_id => "320", :use_subscription_id => true }
90
- @resp.should_receive(:code)
91
- @client.remove_subscription(opts).should be_a(Array)
90
+ expect(@resp).to receive(:code)
91
+ expect(@client.remove_subscription(opts)).to be_a(Array)
92
92
  end
93
93
  end
94
94
 
@@ -111,40 +111,40 @@ describe Fitgem::Client do
111
111
  it "adds the subscriber id header" do
112
112
  opts = { :subscriber_id => '5555', :subscription_id => '320-activity' }
113
113
  headers = @client.send(:make_headers, opts)
114
- headers.size.should == 1
115
- headers['X-Fitbit-Subscriber-Id'].should == "5555"
114
+ expect(headers.size).to eq 1
115
+ expect(headers['X-Fitbit-Subscriber-Id']).to eq "5555"
116
116
  end
117
117
  end
118
118
 
119
119
  describe "#make_subscription_url" do
120
120
  it "creates the correct URL when no specific subscription id is used" do
121
121
  opts = { :subscription_id => "320", :type => :all }
122
- @client.send(:make_subscription_url, opts).should == "/user/-/apiSubscriptions.json"
122
+ expect(@client.send(:make_subscription_url, opts)).to eq "/user/-/apiSubscriptions.json"
123
123
  end
124
124
 
125
125
  it "creates the correct URL for :all collection types" do
126
126
  opts = { :subscription_id => "320", :type => :all, :use_subscription_id => true }
127
- @client.send(:make_subscription_url, opts).should == "/user/-/apiSubscriptions/320.json"
127
+ expect(@client.send(:make_subscription_url, opts)).to eq "/user/-/apiSubscriptions/320.json"
128
128
  end
129
129
 
130
130
  it "creates the correct URL for the :sleep collection type" do
131
131
  opts = { :subscription_id => "320", :type => :sleep, :use_subscription_id => true }
132
- @client.send(:make_subscription_url, opts).should == "/user/-/sleep/apiSubscriptions/320.json"
132
+ expect(@client.send(:make_subscription_url, opts)).to eq "/user/-/sleep/apiSubscriptions/320.json"
133
133
  end
134
134
 
135
135
  it "creates the correct URL for the :body collection type" do
136
136
  opts = { :subscription_id => "320", :type => :body, :use_subscription_id => true }
137
- @client.send(:make_subscription_url, opts).should == "/user/-/body/apiSubscriptions/320.json"
137
+ expect(@client.send(:make_subscription_url, opts)).to eq "/user/-/body/apiSubscriptions/320.json"
138
138
  end
139
139
 
140
140
  it "creates the correct URL for the :activities collection type" do
141
141
  opts = { :subscription_id => "320", :type => :activities, :use_subscription_id => true }
142
- @client.send(:make_subscription_url, opts).should == "/user/-/activities/apiSubscriptions/320.json"
142
+ expect(@client.send(:make_subscription_url, opts)).to eq "/user/-/activities/apiSubscriptions/320.json"
143
143
  end
144
144
 
145
145
  it "creates the correct URL for the :foods collection type" do
146
146
  opts = { :subscription_id => "320", :type => :foods, :use_subscription_id => true }
147
- @client.send(:make_subscription_url, opts).should == "/user/-/foods/apiSubscriptions/320.json"
147
+ expect(@client.send(:make_subscription_url, opts)).to eq "/user/-/foods/apiSubscriptions/320.json"
148
148
  end
149
149
 
150
150
  it "validates the supplied subscription type" do
@@ -155,19 +155,19 @@ describe Fitgem::Client do
155
155
  expect { @client.send(:make_subscription_url, opts) }.to raise_error Fitgem::InvalidArgumentError
156
156
 
157
157
  opts[:type] = :all
158
- expect { @client.send(:make_subscription_url, opts) }.not_to raise_error Fitgem::InvalidArgumentError
158
+ expect { @client.send(:make_subscription_url, opts) }.not_to raise_error
159
159
 
160
160
  opts[:type] = :activities
161
- expect { @client.send(:make_subscription_url, opts) }.not_to raise_error Fitgem::InvalidArgumentError
161
+ expect { @client.send(:make_subscription_url, opts) }.not_to raise_error
162
162
 
163
163
  opts[:type] = :sleep
164
- expect { @client.send(:make_subscription_url, opts) }.not_to raise_error Fitgem::InvalidArgumentError
164
+ expect { @client.send(:make_subscription_url, opts) }.not_to raise_error
165
165
 
166
166
  opts[:type] = :foods
167
- expect { @client.send(:make_subscription_url, opts) }.not_to raise_error Fitgem::InvalidArgumentError
167
+ expect { @client.send(:make_subscription_url, opts) }.not_to raise_error
168
168
 
169
169
  opts[:type] = :body
170
- expect { @client.send(:make_subscription_url, opts) }.not_to raise_error Fitgem::InvalidArgumentError
170
+ expect { @client.send(:make_subscription_url, opts) }.not_to raise_error
171
171
  end
172
172
  end
173
173
  end
@@ -3,62 +3,34 @@ require 'spec_helper'
3
3
  describe Fitgem do
4
4
  before do
5
5
  @client = Fitgem::Client.new({
6
- :consumer_key => '12345',
6
+ :consumer_key => '12345',
7
7
  :consumer_secret => '67890'
8
8
  })
9
9
  end
10
10
 
11
11
  describe 'global settings' do
12
12
  it 'should expose the api_version' do
13
- @client.api_version.should == "1"
13
+ expect(@client.api_version).to eq "1"
14
14
  end
15
15
 
16
16
  it 'should all clients to set a new api version' do
17
17
  @client.api_version = "2"
18
- @client.api_version.should == "2"
18
+ expect(@client.api_version).to eq "2"
19
19
  end
20
20
 
21
21
  it 'should default to the US unit system' do
22
- @client.api_unit_system.should == Fitgem::ApiUnitSystem.US
22
+ expect(@client.api_unit_system).to eq Fitgem::ApiUnitSystem.US
23
23
  end
24
24
 
25
25
  it 'should allow the unit system to be set to other types' do
26
26
  @client.api_unit_system = Fitgem::ApiUnitSystem.UK
27
- @client.api_unit_system.should == Fitgem::ApiUnitSystem.UK
27
+ expect(@client.api_unit_system).to eq Fitgem::ApiUnitSystem.UK
28
28
  @client.api_unit_system = Fitgem::ApiUnitSystem.METRIC
29
- @client.api_unit_system.should == Fitgem::ApiUnitSystem.METRIC
29
+ expect(@client.api_unit_system).to eq Fitgem::ApiUnitSystem.METRIC
30
30
  end
31
31
 
32
32
  it 'should default to a user id of \'-\', the currently-logged in user' do
33
- @client.user_id.should == '-'
34
- end
35
-
36
- it "returns the protocol to be used" do
37
- @client.protocol.should eq "http"
38
- end
39
-
40
- describe "ssl" do
41
- it "should expose the ssl setting" do
42
- @client.ssl.should eq nil
43
- end
44
-
45
- context "when true" do
46
- let(:client) { Fitgem::Client.new({
47
- :consumer_key => '12345',
48
- :consumer_secret => '67890',
49
- :ssl => true
50
- }) }
51
-
52
- it "can set the ssl setting to true" do
53
- client.ssl.should be_true
54
- end
55
-
56
- it "uses https protocol" do
57
- client.protocol.should eq "https"
58
- end
59
-
60
- end
61
-
33
+ expect(@client.user_id).to eq '-'
62
34
  end
63
35
  end
64
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fitgem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zachery Moneypenny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-11 00:00:00.000000000 Z
11
+ date: 2014-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.0.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 3.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -89,8 +89,8 @@ extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
91
  - .gitignore
92
- - .yardopts
93
92
  - .travis.yml
93
+ - .yardopts
94
94
  - Gemfile
95
95
  - Guardfile
96
96
  - LICENSE
@@ -99,10 +99,10 @@ files:
99
99
  - changelog.md
100
100
  - fitgem.gemspec
101
101
  - lib/fitgem.rb
102
- - lib/fitgem/version.rb
103
102
  - lib/fitgem/activities.rb
104
103
  - lib/fitgem/alarms.rb
105
104
  - lib/fitgem/badges.rb
105
+ - lib/fitgem/blood_pressure.rb
106
106
  - lib/fitgem/body_measurements.rb
107
107
  - lib/fitgem/client.rb
108
108
  - lib/fitgem/devices.rb
@@ -110,21 +110,21 @@ files:
110
110
  - lib/fitgem/food_form.rb
111
111
  - lib/fitgem/foods.rb
112
112
  - lib/fitgem/friends.rb
113
+ - lib/fitgem/glucose.rb
114
+ - lib/fitgem/heart_rate.rb
113
115
  - lib/fitgem/helpers.rb
114
116
  - lib/fitgem/notifications.rb
115
117
  - lib/fitgem/sleep.rb
116
118
  - lib/fitgem/time_range.rb
117
119
  - lib/fitgem/units.rb
118
120
  - lib/fitgem/users.rb
121
+ - lib/fitgem/version.rb
119
122
  - lib/fitgem/water.rb
120
- - lib/fitgem/blood_pressure.rb
121
- - lib/fitgem/glucose.rb
122
- - lib/fitgem/heart_rate.rb
123
+ - spec/fitgem_constructor_spec.rb
124
+ - spec/fitgem_helper_spec.rb
125
+ - spec/fitgem_notifications_spec.rb
123
126
  - spec/fitgem_spec.rb
124
127
  - spec/spec_helper.rb
125
- - spec/fitgem_notifications_spec.rb
126
- - spec/fitgem_helper_spec.rb
127
- - spec/fitgem_constructor_spec.rb
128
128
  homepage: http://github.com/whazzmaster/fitgem
129
129
  licenses: []
130
130
  metadata: {}
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  version: '0'
145
145
  requirements: []
146
146
  rubyforge_project: fitgem
147
- rubygems_version: 2.0.3
147
+ rubygems_version: 2.2.2
148
148
  signing_key:
149
149
  specification_version: 4
150
150
  summary: OAuth client library to the data on fitbit.com