diff --git a/CHANGELOG.md b/CHANGELOG.md index 9791cac..cd58e7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ### 2.3.0 (Next) +* [#89]https://github.com/dblock/strava-ruby-client/pull/89: Fix for time parsing in club events - [@tobiaszwaszak](https://github.com/tobiaszwaszak). * [#87](https://github.com/dblock/strava-ruby-client/pull/87): Prepares v2.3.0 by improving the event specs - [@simonneutert](https://github.com/simonneutert). * [#86](https://github.com/dblock/strava-ruby-client/pull/86): Add description to club event model - [@tobiaszwaszak](https://github.com/tobiaszwaszak). * Your contribution here. diff --git a/lib/strava/models/club_event.rb b/lib/strava/models/club_event.rb index 8c72b76..53a3d3c 100644 --- a/lib/strava/models/club_event.rb +++ b/lib/strava/models/club_event.rb @@ -11,7 +11,7 @@ class ClubEvent < Strava::Models::Response property 'club', transform_with: ->(c) { Strava::Models::Club.new(c) } property 'organizing_athlete', transform_with: ->(oa) { Strava::Models::Athlete.new(oa) } property 'activity_type' - property 'created_at', transform_with: ->(v) { Time.parse(v) } + property 'created_at', transform_with: ->(v) { Time.parse(v) if v['created_at'] } property 'route_id' property 'route', transform_with: ->(r) { Strava::Models::Route.new(r) } property 'women_only' diff --git a/spec/strava/api/client/endpoints/clubs/club_events_spec.rb b/spec/strava/api/client/endpoints/clubs/club_events_spec.rb index 20776b5..3058301 100644 --- a/spec/strava/api/client/endpoints/clubs/club_events_spec.rb +++ b/spec/strava/api/client/endpoints/clubs/club_events_spec.rb @@ -29,4 +29,28 @@ expect(event.upcoming_occurrences.first).to eq(Time.new(2018, 6, 23, 8, 30, 0, '+00:00')) expect(event).to be_a Strava::Models::ClubEvent end + + context 'when created_at is invalid' do + let(:invalid_event_json) do + { + 'id' => 123, + 'resource_state' => 2, + 'title' => 'Invalid Event', + 'club_id' => 456, + 'organizing_athlete' => { 'id' => 789, 'firstname' => 'John', 'lastname' => 'Doe' }, + 'activity_type' => 'Ride', + 'created_at' => nil, + 'route_id' => nil, + 'route' => nil + } + end + + it 'returns club events without created_at value' do + event = Strava::Models::ClubEvent.new(invalid_event_json) + expect(event.created_at).to be_nil + expect(event.strava_url).to eq 'https://www.strava.com/clubs/456/group_events/123' + expect(event.organizing_athlete).to be_a Strava::Models::Athlete + expect(event.route).to be_nil + end + end end