Skip to content

Commit

Permalink
Add .show and .efforts for Strava::Ride
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenchanin committed Sep 28, 2010
1 parent 5a957c9 commit 8a14999
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/strava/ride.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,13 @@ class Ride < HashBasedStore
def initialize(connection, options = {})
super(connection, ATTRIBUTE_MAP, NESTED_CLASS_MAP, options)
end

def show
self.merge(@connection.ride_show(self.id))
end

def efforts
@connection.ride_efforts(self.id)
end
end #class Ride
end
2 changes: 2 additions & 0 deletions strava.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Gem::Specification.new do |s|
"test/test_club.rb",
"test/test_clubs.rb",
"test/test_hash_based_store.rb",
"test/test_ride.rb",
"test/test_rides.rb",
"test/test_segments.rb",
"test/test_strava.rb"
Expand All @@ -54,6 +55,7 @@ Gem::Specification.new do |s|
"test/test_club.rb",
"test/test_clubs.rb",
"test/test_hash_based_store.rb",
"test/test_ride.rb",
"test/test_rides.rb",
"test/test_segments.rb",
"test/test_strava.rb"
Expand Down
9 changes: 9 additions & 0 deletions test/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,13 @@ def segment_efforts_index_using_offset_50_json
##curl http://www.strava.com/api/v1/segments/99243/efforts?offset=50
'{"efforts":[{"startDate":"2010-04-13T13:53:33Z","startDateLocal":"2010-04-13T06:53:33Z", "activityId":88677,"timeZoneOffset":-8.0,"athlete":{"username":"danv","name":"Dan Vigil","id":1167},"elapsedTime":291,"id":835674},{"startDate":"2010-04-13T13:53:55Z","startDateLocal":"2010-04-13T06:53:55Z","activityId":96689,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":291,"id":931209},{"startDate":"2010-03-30T14:08:07Z","startDateLocal":"2010-03-30T07:08:07Z","activityId":85949,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":292,"id":792330},{"startDate":"2010-03-30T14:08:06Z","startDateLocal":"2010-03-30T07:08:06Z","activityId":85748,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":294,"id":790151},{"startDate":"2010-03-30T14:08:06Z","startDateLocal":"2010-03-30T07:08:06Z","activityId":85754,"timeZoneOffset":-8.0,"athlete":{"username":"mgaiman","name":"Michael Gaiman","id":721},"elapsedTime":294,"id":790228},{"startDate":"2010-06-12T00:06:18Z","startDateLocal":"2010-06-11T17:06:18Z","activityId":118354,"timeZoneOffset":-8.0,"athlete":{"username":"jherrick","name":"Jason Herrick","id":1665},"elapsedTime":294,"id":1290745},{"startDate":"2010-07-02T02:22:43Z","startDateLocal":"2010-07-01T19:22:43Z","activityId":129273,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":294,"id":1471199},{"startDate":"2009-11-10T17:02:39Z","startDateLocal":"2009-11-10T09:02:39Z","activityId":64007,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":295,"id":533753},{"startDate":"2009-12-23T21:05:03Z","startDateLocal":"2009-12-23T13:05:03Z","activityId":57385,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":295,"id":469039},{"startDate":"2009-08-13T14:03:34Z","startDateLocal":"2009-08-13T06:03:34Z","activityId":10455,"timeZoneOffset":-8.0,"athlete":{"username":"cdonahue","name":"C. Donahue","id":19},"elapsedTime":296,"id":111261},{"startDate":"2009-11-10T17:40:30Z","startDateLocal":"2009-11-10T09:40:30Z","activityId":64007,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":296,"id":533755},{"startDate":"2009-11-29T22:13:26Z","startDateLocal":"2009-11-29T14:13:26Z","activityId":52093,"timeZoneOffset":-8.0,"athlete":{"username":"jblohm","name":"Joern Blohm","id":1723},"elapsedTime":296,"id":416889},{"startDate":"2010-01-16T19:51:04Z","startDateLocal":"2010-01-16T11:51:04Z","activityId":62823,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":296,"id":519899},{"startDate":"2010-02-20T17:31:36Z","startDateLocal":"2010-02-20T09:31:36Z","activityId":148263,"timeZoneOffset":-8.0,"athlete":{"username":"jduff80","name":"James Duff","id":4201},"elapsedTime":296,"id":1854890},{"startDate":"2010-06-10T13:54:50Z","startDateLocal":"2010-06-10T06:54:50Z","activityId":117327,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":296,"id":1276926},{"startDate":"2010-07-02T02:22:43Z","startDateLocal":"2010-07-01T19:22:43Z","activityId":129293,"timeZoneOffset":-8.0,"athlete":{"username":"matth","name":"Matt Hough","id":4542},"elapsedTime":296,"id":1471693},{"startDate":"2010-03-30T14:08:07Z","startDateLocal":"2010-03-30T07:08:07Z","activityId":85752,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":297,"id":790198},{"startDate":"2010-04-21T18:54:31Z","startDateLocal":"2010-04-21T11:54:31Z","activityId":183987,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":297,"id":2520922},{"startDate":"2009-12-23T18:20:10Z","startDateLocal":"2009-12-23T10:20:10Z","activityId":63973,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":298,"id":532999},{"startDate":"2010-01-28T15:04:48Z","startDateLocal":"2010-01-28T07:04:48Z","activityId":67047,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":298,"id":567793},{"startDate":"2010-03-05T17:40:47Z","startDateLocal":"2010-03-05T09:40:47Z","activityId":78672,"timeZoneOffset":-8.0,"athlete":{"username":"cb","name":"Carl B","id":1889},"elapsedTime":298,"id":699178},{"startDate":"2009-09-03T14:03:09Z","startDateLocal":"2009-09-03T06:03:09Z","activityId":33077,"timeZoneOffset":-8.0,"athlete":{"username":"ashartsis","name":"A. Shartsis","id":381},"elapsedTime":299,"id":136231},{"startDate":"2010-01-29T16:32:01Z","startDateLocal":"2010-01-29T08:32:01Z","activityId":67451,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":299,"id":572225},{"startDate":"2010-02-17T18:23:22Z","startDateLocal":"2010-02-17T10:23:22Z","activityId":180253,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":299,"id":2447042},{"startDate":"2010-02-17T18:37:55Z","startDateLocal":"2010-02-17T10:37:55Z","activityId":180253,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":299,"id":2447041},{"startDate":"2009-08-27T14:03:29Z","startDateLocal":"2009-08-27T06:03:29Z","activityId":31667,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":300,"id":123583},{"startDate":"2010-02-26T18:46:52Z","startDateLocal":"2010-02-26T10:46:52Z","activityId":183962,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":300,"id":2520236},{"startDate":"2010-03-23T14:06:45Z","startDateLocal":"2010-03-23T07:06:45Z","activityId":83657,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":300,"id":758475},{"startDate":"2010-07-15T13:54:01Z","startDateLocal":"2010-07-15T06:54:01Z","activityId":139096,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":300,"id":1662943},{"startDate":"2009-07-14T14:03:32Z","startDateLocal":"2009-07-14T06:03:32Z","activityId":6647,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":301,"id":111331},{"startDate":"2010-04-07T23:30:56Z","startDateLocal":"2010-04-07T16:30:56Z","activityId":87745,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":301,"id":820721},{"startDate":"2010-04-29T13:58:54Z","startDateLocal":"2010-04-29T06:58:54Z","activityId":95245,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":301,"id":912230},{"startDate":"2010-05-28T13:51:02Z","startDateLocal":"2010-05-28T06:51:02Z","activityId":107496,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":301,"id":1105689},{"startDate":"2010-03-10T15:24:28Z","startDateLocal":"2010-03-10T07:24:28Z","activityId":80222,"timeZoneOffset":-8.0,"athlete":{"username":"jbarkow","name":"Jim Barkow","id":28},"elapsedTime":302,"id":715752},{"startDate":"2010-03-10T15:24:28Z","startDateLocal":"2010-03-10T07:24:28Z","activityId":187648,"timeZoneOffset":-8.0,"athlete":{"username":"jbarkow","name":"Jim Barkow","id":28},"elapsedTime":302,"id":2598626},{"startDate":"2010-06-01T13:53:08Z","startDateLocal":"2010-06-01T06:53:08Z","activityId":109732,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":302,"id":1144277},{"startDate":"2010-06-10T13:54:52Z","startDateLocal":"2010-06-10T06:54:52Z","activityId":117254,"timeZoneOffset":-8.0,"athlete":{"username":"jonringer","name":"Jon Ringer","id":4604},"elapsedTime":302,"id":1275990},{"startDate":"2010-06-17T13:54:18Z","startDateLocal":"2010-06-17T06:54:18Z","activityId":121208,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":302,"id":1341216},{"startDate":"2009-11-26T19:16:17Z","startDateLocal":"2009-11-26T11:16:17Z","activityId":51357,"timeZoneOffset":-8.0,"athlete":{"username":"cstrobel","name":"C. Strobel","id":2093},"elapsedTime":303,"id":408513},{"startDate":"2009-12-13T18:09:38Z","startDateLocal":"2009-12-13T10:09:38Z","activityId":63985,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":303,"id":533353},{"startDate":"2009-12-13T23:39:05Z","startDateLocal":"2009-12-13T15:39:05Z","activityId":54299,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":303,"id":440165},{"startDate":"2010-02-15T01:01:13Z","startDateLocal":"2010-02-14T17:01:13Z","activityId":180265,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":303,"id":2447422},{"startDate":"2009-10-25T16:16:24Z","startDateLocal":"2009-10-25T08:16:24Z","activityId":45291,"timeZoneOffset":-8.0,"athlete":{"username":"jwillin","name":"Jamie Willin","id":1313},"elapsedTime":304,"id":346907},{"startDate":"2009-11-25T19:43:31Z","startDateLocal":"2009-11-25T11:43:31Z","activityId":51553,"timeZoneOffset":-8.0,"athlete":{"username":"jblohm","name":"Joern Blohm","id":1723},"elapsedTime":304,"id":410953},{"startDate":"2010-03-27T18:59:00Z","startDateLocal":"2010-03-27T11:59:00Z","activityId":85043,"timeZoneOffset":-8.0,"athlete":{"username":"jjohnson","name":"J. Johnson","id":51},"elapsedTime":304,"id":781111},{"startDate":"2010-04-15T23:32:50Z","startDateLocal":"2010-04-15T16:32:50Z","activityId":89508,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":304,"id":845989},{"startDate":"2009-04-16T23:32:49Z","startDateLocal":"2009-04-16T15:32:49Z","activityId":1863,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":305,"id":111069},{"startDate":"2009-10-12T15:31:11Z","startDateLocal":"2009-10-12T07:31:11Z","activityId":64031,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":305,"id":533983},{"startDate":"2009-12-14T16:26:27Z","startDateLocal":"2009-12-14T08:26:27Z","activityId":63981,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":305,"id":533275},{"startDate":"2010-03-20T17:30:41Z","startDateLocal":"2010-03-20T10:30:41Z","activityId":82682,"timeZoneOffset":-8.0,"athlete":{"username":"mwolfe","name":"Michael Wolfe","id":3589},"elapsedTime":306,"id":741508}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
end

#used in test_ride.rb, NOT test_rides.rb
def ride_show_method_json
'{"ride":{"averageSpeed":27044.0347826087,"location":"San Luis Obispo, CA","startDate":"2010-09-26T22:47:12Z","description":null,"averageWatts":156.743,"name":"from SVRMC","startDateLocal":"2010-09-26T15:47:12Z","maximumSpeed":49668.84,"timeZoneOffset":-8.0,"athlete":{"username":"ssharp","name":"Steve Sharp","id":779},"elevationGain":197.551,"distance":12958.6,"elapsedTime":1725,"bike":{"name":"Time VXR Proteam","id":527},"id":191846,"movingTime":1725}}'
end

def ride_effort_method_json
'{"ride":{"name":"from SVRMC","id":191846},"efforts":[{"elapsed_time":41,"segment":{"name":"Valley Vista Bump","id":626862},"id":2684066}]}'
end
end
48 changes: 48 additions & 0 deletions test/test_ride.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
require 'helper'
require 'mocha'
require 'json'

class TestRide < Test::Unit::TestCase
def setup
@s = Strava::Base.new

api_result = JSON.parse rides_index_by_club_json
api_result.stubs(:parsed_response).returns("")
Strava::Base.stubs(:get).with('/rides', { :query => {'clubId' => 23} }).returns(api_result)

@ride = @s.rides(:club_id => 23).first
end

def test_show
api_result = JSON.parse ride_show_method_json
api_result.stubs(:parsed_response).returns("")
Strava::Base.stubs(:get).with('/rides/191846', { :query => {} }).returns(api_result)

assert @ride.id == 191846
assert @ride.name == "from SVRMC"
assert @ride.distance.nil?
assert @ride.location.nil?

@ride.show

assert @ride.id == 191846
assert @ride.name == "from SVRMC"
assert @ride.distance == 12958.6
assert @ride.location == "San Luis Obispo, CA"
end

def test_efforts
api_result = JSON.parse ride_effort_method_json
api_result.stubs(:parsed_response).returns("")
Strava::Base.stubs(:get).with('/rides/191846/efforts', { :query => {} }).returns(api_result)

efforts = @ride.efforts

assert efforts.is_a?(Array)
assert efforts.size == 1
efforts.each do |effort|
assert effort.is_a?(Strava::Effort)
end
end

end

0 comments on commit 8a14999

Please sign in to comment.