fitgem 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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