nike_v2 0.1.1 → 0.1.2

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.
@@ -4,7 +4,7 @@ module NikeV2
4
4
  include Enumerable
5
5
  extend Forwardable
6
6
 
7
- def_delegators :@activities_array, :[]=, :<<, :[], :count, :length, :each
7
+ def_delegators :@activities_array, :[]=, :<<, :[], :count, :length, :each, :first, :last
8
8
  def_delegator :@person, :access_token
9
9
 
10
10
  API_URL = '/me/sport/activities'
@@ -16,10 +16,26 @@ module NikeV2
16
16
 
17
17
  #TODO: make it pass blocks
18
18
  activities = fetch_data
19
- activities.delete('data').each do |data|
20
- self << NikeV2::Activity.new({:person => self}.merge(data))
21
- end
19
+ build_activities(activities.delete('data'))
20
+
22
21
  super(activities)
23
22
  end
23
+
24
+ def fetch_more
25
+ unless self.paging['next'].blank?
26
+ url, query = self.paging['next'].match(/^(.*?)\?(.*)$/)[1,2]
27
+ query = query.split(/&/).inject({}){|h,item| k, v = item.split(/\=/); h[k] = v;h}
28
+ activities = fetch_data(url, {query: query})
29
+ build_activities(activities.delete('data'))
30
+ self.paging = activities.delete['paging']
31
+ end
32
+ end
33
+
34
+ private
35
+ def build_activities(data)
36
+ data.each do |activity|
37
+ self << NikeV2::Activity.new({:person => self}.merge(activity))
38
+ end
39
+ end
24
40
  end
25
41
  end
@@ -15,11 +15,22 @@ module NikeV2
15
15
  @gps_data ||= NikeV2::GpsData.new(:activity => self)
16
16
  end
17
17
 
18
+ def metrics
19
+ @metrics
20
+ end
21
+
18
22
  def load_data
19
- set_attributes(fetch_data)
23
+ data = fetch_data
24
+ @metrics = NikeV2::Metrics.new(self, data.delete('metrics'))
25
+
26
+ set_attributes(data)
20
27
  true
21
28
  end
22
29
 
30
+ def started_at
31
+ @started_at ||= Time.parse(self.start_time)
32
+ end
33
+
23
34
  private
24
35
  def api_url
25
36
  API_URL + "/#{self.activity_id}"
@@ -0,0 +1,37 @@
1
+ module NikeV2
2
+ class Metric
3
+
4
+ def initialize(activity, data)
5
+ @activity = activity
6
+ @unit = data['intervalUnit']
7
+ @type = data ['metricType']
8
+ @values = data['values']
9
+ end
10
+
11
+ def type
12
+ @type
13
+ end
14
+
15
+ def values
16
+ @values
17
+ end
18
+
19
+ def total
20
+ @total ||= values.inject(:+)
21
+ end
22
+
23
+ def total_during(start, stop)
24
+ during(start, stop).collect(&:to_i).inject(:+)
25
+ end
26
+
27
+ def during(start, stop)
28
+ @values[time_to_index(start)..time_to_index(stop)]
29
+ end
30
+
31
+ private
32
+ def time_to_index(time)
33
+ difference = time.to_i - @activity.started_at.to_i
34
+ difference.seconds.to.send(@unit.downcase).to_s.to_i
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,38 @@
1
+ require 'enumerator'
2
+ module NikeV2
3
+ class Metrics
4
+ include Enumerable
5
+ extend Forwardable
6
+
7
+ def_delegators :@metrics_array, :[]=, :<<, :[], :count, :length, :each, :first, :last
8
+
9
+ def initialize(activity, data_set)
10
+ @activity = activity
11
+ @metrics_array = []
12
+ build_metrics(data_set)
13
+ end
14
+
15
+ def fuel_points
16
+ @fuel_points ||= sum_of_type('FUELPOINTS')
17
+ end
18
+
19
+ def calories
20
+ @fuel_points ||= sum_of_type('CALORIES')
21
+ end
22
+
23
+ def distance
24
+ @fuel_points ||= sum_of_type('DISTANCE')
25
+ end
26
+
27
+ private
28
+ def build_metrics(data_set)
29
+ data_set.each do |metric|
30
+ self << NikeV2::Metric.new(@activity, metric)
31
+ end
32
+ end
33
+
34
+ def sum_of_type(type)
35
+ @metrics_array.select{|m| m.type == type}.collect(&:total).inject(:+) || 0.00
36
+ end
37
+ end
38
+ end
@@ -8,29 +8,37 @@ module NikeV2
8
8
  super(attributes)
9
9
  end
10
10
 
11
- def fetch_data
12
- get(api_url).parsed_response
11
+ def fetch_data(*args)
12
+ args << api_url if args.empty?
13
+ get(*args).parsed_response
13
14
  end
14
15
 
15
16
  def get(*args, &block)
16
- unless has_options?(args)
17
- query = { 'access_token' => access_token }
18
- headers = { 'Accept' => 'application/json', 'appid' => app_id }
19
- options = { query: query, headers: headers }
20
- args << options
21
- end
17
+ build_options(args)
22
18
  self.class.get(*args, &block)
23
19
  end
24
20
 
25
21
  private
26
22
 
23
+ def build_options(args)
24
+ query = { 'access_token' => access_token }
25
+ headers = { 'Accept' => 'application/json', 'appid' => app_id }
26
+ options = { query: query, headers: headers }
27
+ if has_options?(args)
28
+ args[-1] = options.merge(args.last)
29
+ else
30
+ args << options
31
+ end
32
+ end
33
+
34
+
27
35
  def app_id
28
36
  #TODO: make this a config yaml
29
37
  'nike'
30
38
  end
31
39
 
32
40
  def has_options?(args)
33
- args.last.class.is_a?(Hash) && args.last.keys.any?{ |key| %w[basic_auth body headers no_follow query].include?(key) }
41
+ args.last.is_a?(Hash)
34
42
  end
35
43
 
36
44
  def api_url
data/lib/nike_v2.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'httparty'
2
2
  require 'forwardable'
3
+ require 'alchemist'
3
4
  require 'ext/core_ext'
4
5
  require 'nike_v2/base'
5
6
  require 'nike_v2/experience_type'
@@ -9,7 +10,9 @@ require 'nike_v2/activities'
9
10
  require 'nike_v2/activity'
10
11
  require 'nike_v2/summary'
11
12
  require 'nike_v2/gps_data'
13
+ require 'nike_v2/metrics'
14
+ require 'nike_v2/metric'
12
15
 
13
16
  module NikeV2
14
- VERSION = '0.1.1'
17
+ VERSION = '0.1.2'
15
18
  end
data/nike_v2.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.require_paths = ['lib']
18
18
 
19
19
  s.add_runtime_dependency 'httparty', '>= 0.10.0'
20
+ s.add_runtime_dependency 'alchemist', '>= 0.1.3'
20
21
 
21
22
  s.add_development_dependency 'factory_girl', '~> 4.2.0'
22
23
  s.add_development_dependency 'rake', '~> 10.0.3'
@@ -30,7 +30,7 @@ http_interactions:
30
30
  - keep-alive
31
31
  body:
32
32
  encoding: US-ASCII
33
- string: ! '{ "activityId": "91b501dc-4a38-44aa-b537-6095418713d8", "calories": 257, "fuel": 662, "distance": 3.1317999362945557, "steps": 10, "duration": "0:14:31.000", "activityType": "RUN", "startTime": "2011-08-11T02:44:39Z", "activityTimeZone": "GMT-08:00", "status": "COMPLETE", "deviceType": "SPORTWATCH", "tags": [ { "tagType": "NOTE", "value": "text string" }, { "tagType": "COURT", "value": "DUNK" }, { "tagType": "TERRAIN", "value": "TRAIL" }, { "tagType": "EMOTION", "value": "HAPPY" }, { "tagType": "SHOES", "value": "AirMax" }, { "tagType": "WEATHER", "value": "RAINY" } ], "metrics": [ { "intervalMetric": 10, "intervalUnit": "SEC", "metricType": "DISTANCE", "values": [ 0.0299, 0.0562, 0.0794, 0.114, 3.0967, 3.1296 ] } ] }'
33
+ string: ! '{ "activityId": "91b501dc-4a38-44aa-b537-6095418713d8", "calories": 257, "fuel": 662, "distance": 3.1317999362945557, "steps": 10, "duration": "0:14:31.000", "activityType": "RUN", "startTime": "2011-08-11T02:44:39Z", "activityTimeZone": "GMT-08:00", "status": "COMPLETE", "deviceType": "SPORTWATCH", "tags": [ { "tagType": "NOTE", "value": "text string" }, { "tagType": "COURT", "value": "DUNK" }, { "tagType": "TERRAIN", "value": "TRAIL" }, { "tagType": "EMOTION", "value": "HAPPY" }, { "tagType": "SHOES", "value": "AirMax" }, { "tagType": "WEATHER", "value": "RAINY" } ], "metrics": [ { "intervalMetric": 10, "intervalUnit": "SEC", "metricType": "DISTANCE", "values": [ 0.0299, 0.0562, 0.0794, 0.114, 3.0967, 3.1296 ] }, { "intervalMetric": 1, "intervalUnit": "MIN", "metricType": "FUEL", "values": [ "21", "8", "21", "3", "19", "19", "8", "25", "8", "3", "16", "14", "23", "26", "28", "24", "14", "19", "16", "0", "2", "20", "22", "3", "21", "7", "24", "26", "25", "8", "21", "22", "20", "6", "22", "17", "15", "2", "22", "4", "18", "16", "9", "10", "0", "24", "7", "25", "9", "8", "15", "3", "7", "12", "22", "18", "13", "28", "15", "0", "22", "24", "16", "14", "12", "14", "18", "5", "8", "24", "9", "18", "25", "15", "6", "3", "28", "5", "8", "6", "19", "6", "18", "18", "21", "24", "26", "0", "24", "12", "5", "11", "3", "12", "22", "22", "22", "23", "1", "1", "16", "6", "26", "14", "11", "23", "15", "4", "13", "2", "3", "28", "2", "7", "9", "0", "4", "25", "18", "10", "25", "3", "23", "27", "10", "20", "2", "15", "23", "1", "21", "14", "4", "1", "26", "20", "20", "28", "24", "18", "9", "24", "23", "16", "0", "11", "14", "14", "12", "15", "12", "3", "14", "21", "17", "22", "28", "28", "27", "21", "15", "25", "24", "2", "25", "21", "20", "3", "20", "6", "2", "6", "1", "25", "20", "20", "23", "9", "8", "17", "5", "15", "2", "15", "21", "21", "25", "13", "10", "22", "10", "6", "25", "27", "6", "24", "0", "20", "27", "12", "23", "7", "20", "11", "15", "23", "20", "21", "24", "25", "21", "20", "12", "7", "16", "24", "16", "26", "15", "16", "15", "7", "11", "17", "26", "24", "17", "25", "12", "23", "12", "5", "23", "7", "11", "1", "6", "14", "18", "14", "8", "11", "13", "0", "17", "15", "26", "25", "0", "17", "27", "6", "14", "19", "16", "12", "15", "1", "12", "15", "12", "0", "7", "16", "12", "22", "10", "14", "27", "9", "6", "16", "4", "18", "18", "19", "16", "7", "12", "12", "4", "17", "25", "20", "28", "7", "9", "5", "2", "14", "7", "28", "11", "11", "3", "25", "13", "1", "15", "3", "27", "8", "6", "17", "24", "6", "19", "25", "2", "3", "12", "2", "18", "15", "25", "25", "26", "28", "22", "18", "0", "0", "24", "25", "7", "2", "28", "0", "21", "23", "26", "25", "7", "22", "27", "11", "4", "15", "12", "3", "2", "26", "6", "13", "26", "1", "18", "14", "22", "9", "9", "1", "19", "12", "27", "10", "6", "6", "25", "1", "21", "21", "6", "20", "22", "1", "3", "8", "1", "7", "11", "10", "16", "5", "14", "19", "21", "23", "3", "3", "4", "10", "20", "6", "1", "19", "0", "8", "28", "10", "19", "14", "17", "3", "13", "7", "24", "26", "8", "1", "27", "5", "2", "9", "13", "0", "20", "9", "23", "13", "27", "13", "1", "2", "12", "13", "17", "20", "21", "22", "1", "13", "14", "2", "16", "12", "9", "19", "10", "2", "28", "27", "23", "25", "27", "9", "28", "25", "3", "28", "13", "18", "3", "25", "25", "3", "10", "20", "5", "27", "14", "24", "10", "4", "11", "16", "11", "6", "16", "24", "20", "14", "23", "8", "13", "5", "25", "7", "11", "23", "10", "0", "27", "1", "22", "28", "26", "13", "16", "23", "13", "2", "22", "23", "25", "2", "7", "1", "9", "28", "13", "24", "16", "1", "24", "4", "21", "25", "12", "7", "26", "0", "1", "13", "23", "12", "2", "4", "1", "12", "23", "12", "21", "21", "2", "10", "5", "16", "1", "17", "1", "2", "4", "1", "27", "14", "12", "13", "27", "28", "8", "21", "18", "6", "15", "10", "12", "7", "0", "26", "4", "12", "1", "1", "20", "22", "10", "19", "27", "16", "7", "24", "14", "25", "0", "10", "5", "5", "8", "5", "3", "16", "15", "6", "7", "5", "14", "6", "11", "18", "17", "11", "7", "7", "2", "24", "11", "13", "17", "26", "6", "13", "9", "16", "18", "3", "12", "14", "3", "13", "11", "20", "8", "18", "12", "0", "3", "22", "17", "4", "0", "8", "3", "21", "28", "5", "14", "8", "20", "17", "24", "15", "7", "1", "1", "27", "12", "12", "4", "4", "27", "25", "0", "5", "9", "2", "9", "26", "13", "11", "9", "21", "14", "27", "28", "25", "10", "17", "5", "18", "10", "3", "13", "14", "28", "9", "9", "22", "20", "0", "28", "25", "25", "14", "18", "7", "28", "28", "16", "13", "2", "21", "24", "19", "16", "27", "5", "9", "22", "11", "24", "24", "12", "18", "10", "6", "2", "18", "8", "27", "8", "10", "5", "2", "7", "21", "4", "7", "13", "27", "20", "25", "19", "4", "9", "28", "11", "15", "13", "17", "7", "12", "27", "6", "3", "15", "22", "14", "2", "17", "21", "16", "17", "7", "10", "24", "26", "16", "11", "27", "11", "28", "25", "27", "9", "3", "19", "20", "23", "4", "24", "27", "14", "20", "15", "15", "3", "22", "18", "9", "17", "22", "16", "28", "1", "14", "13", "8", "21", "25", "16", "24", "16", "15", "16", "13", "17", "8", "24", "0", "19", "5", "18", "18", "3", "16", "18", "10", "22", "3", "24", "27", "15", "28", "9", "17", "24", "15", "3", "15", "16", "24", "25", "25", "28", "20", "10", "19", "1", "12", "12", "28", "23", "17", "24", "4", "10", "25", "19", "25", "5", "5", "10", "23", "17", "18", "17", "4", "5", "26", "27", "6", "9", "23", "3", "5", "12", "21", "22", "7", "4", "22", "10", "4", "14", "23", "9", "20", "26", "2", "5", "21", "4", "11", "18", "19", "14", "21", "16", "9", "13", "0", "14", "19", "14", "2", "10", "9", "4", "23", "8", "0", "10", "12", "24", "6", "3", "1", "20", "28", "24", "11", "5", "14", "23", "0", "20", "24", "4", "6", "5", "21", "13", "5", "28", "9", "11", "5", "12", "1", "10", "8", "24", "23", "28", "14", "2", "2", "10", "3", "21", "23", "2", "0", "12", "20", "20", "17", "18", "27", "20", "0", "27", "28", "11", "15", "5", "0", "1", "4", "3", "21", "22", "22", "22", "1", "7", "19", "8", "6", "11", "5", "19", "16", "6", "11", "20", "23", "5", "25", "27", "16", "5", "18", "17", "18", "25", "11", "25", "5", "16", "13", "16", "8", "7", "0", "13", "27", "14", "20", "26", "26", "11", "12", "16", "25", "6", "24", "16", "20", "26", "14", "22", "16", "12", "21", "23", "15", "20", "24", "23", "14", "10", "1", "11", "0", "16", "15", "9", "24", "14", "11", "9", "21", "18", "13", "26", "4", "16", "7", "16", "14", "11", "6", "13", "2", "6", "19", "21", "4", "4", "14", "22", "28", "23", "1", "2", "11", "24", "13", "20", "7", "28", "15", "6", "14", "25", "5", "21", "17", "25", "23", "18", "4", "11", "28", "5", "24", "19", "17", "4", "1", "1", "9", "15", "16", "12", "26", "4", "12", "21", "9", "11", "4", "19", "13", "25", "11", "13", "3", "10", "13", "22", "21", "22", "5", "18", "9", "18", "26", "15", "9", "12", "3", "27", "25", "19", "11", "28", "23", "19", "2", "16", "18", "21", "26", "28", "25", "18", "23", "23", "5", "22", "13", "15", "12", "24", "25", "20", "9", "16", "13", "21", "15", "17", "25", "11", "21", "21", "13", "25", "24", "26", "12", "1", "28", "6", "19", "19", "22", "15", "9", "0", "16", "0", "4", "8", "4", "8", "7", "21", "23", "15", "19", "5", "13", "19", "19", "22", "14", "8", "2", "4", "15", "27", "19", "21", "27", "1", "7", "5", "15", "15", "6", "25", "11", "7", "19", "17", "17", "3", "10", "26", "1", "25", "6", "0", "20", "0", "23", "20", "0", "13", "27", "2", "12", "4", "16", "13", "22", "19", "15", "11", "27", "21", "26", "26", "9", "8", "24", "10", "20", "21", "7", "17", "28", "21", "19", "3", "21", "7", "9", "21", "6", "13", "26", "20", "6", "7", "4", "0", "7", "17", "12", "21", "12", "14", "17", "21", "4", "12", "8", "20", "2", "4", "6", "23", "27", "16", "16", "19", "10", "14", "9", "8", "14", "18", "19", "22", "21", "24", "0", "14", "15", "17", "10", "17", "28", "27", "26", "16", "10", "14", "6", "25", "20", "22", "26", "5", "0", "26", "1", "16", "4", "1", "13", "24", "9", "25", "19", "26", "16", "27", "28", "5", "8", "27", "9", "16", "24", "2", "3", "23", "15", "10", "17", "11", "24", "1", "2", "19", "5", "25", "27", "16", "17", "27", "15", "15", "27", "8", "2", "7", "25", "14", "3", "12", "16", "17", "20", "19", "9", "11", "1", "22", "13", "7", "7", "21", "18", "15", "14", "18", "23", "5", "11", "17", "15", "7", "17", "17", "15", "16", "17", "4", "10", "21", "13", "25", "0", "17", "17", "5", "15", "27", "25", "24", "5", "0", "18", "8", "6", "25", "25", "20", "27", "21", "25", "3", "5", "0", "13", "6", "7", "9", "7", "19", "13", "13", "4", "24", "0", "23", "17", "0", "7", "1", "16", "4", "21", "10", "23", "6", "12", "21", "1", "5", "11", "25", "8", "15", "26", "3", "2", "0", "22", "16", "8", "19", "16", "2", "9", "28", "14", "9", "15", "1", "8", "18", "9", "4", "9", "19", "18", "16", "28", "4", "10", "23", "22", "9", "21", "25", "8", "9", "16", "16", "21", "18", "8", "20", "17", "3", "15", "23", "16", "24", "10", "10", "28", "27", "18", "4", "25", "22", "19", "11", "2", "23" ] } ] }'
34
34
  http_version:
35
35
  recorded_at: Sun, 20 Jan 2013 04:21:05 GMT
36
36
  recorded_with: VCR 2.4.0
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe NikeV2::Metric do
4
+ let(:activity){ build(:activity) }
5
+
6
+ describe 'fetch_data' do
7
+ before do
8
+ VCR.insert_cassette 'activity', record: :new_episodes
9
+ activity.load_data
10
+ end
11
+
12
+ after{ VCR.eject_cassette }
13
+
14
+ it 'should build the metrics from the activity' do
15
+ metric = activity.metrics.last
16
+ metric.type.should == 'FUEL'
17
+ end
18
+
19
+ it 'should give an array of values during a time range' do
20
+ metric = activity.metrics.last
21
+ metric.during(Time.at(activity.started_at.to_i + (60 * 60)), Time.at(activity.started_at.to_i + (60 * 120) - 1)).length.should == 60
22
+ end
23
+
24
+ it 'should total the values during a time range' do
25
+ metric = activity.metrics.last
26
+ metric.total_during(Time.at(activity.started_at.to_i + (60 * 60)), Time.at(activity.started_at.to_i + (60 * 120))).should == 831
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe NikeV2::Metrics do
4
+ let(:activity){ build(:activity) }
5
+
6
+ describe 'fetch_data' do
7
+ before do
8
+ VCR.insert_cassette 'activity', record: :new_episodes
9
+ activity.load_data
10
+ end
11
+
12
+ after{ VCR.eject_cassette }
13
+
14
+ it 'should build the metrics from the activity' do
15
+ activity.metrics.length.should == 2
16
+ end
17
+
18
+ it 'should sum the metrics of a given type' do
19
+ activity.metrics.distance.should == 6.5058
20
+ end
21
+ end
22
+ end
@@ -9,8 +9,8 @@ describe NikeV2::Summary do
9
9
 
10
10
  it 'should return a Summary of user data' do
11
11
  person.summary.should be_kind_of(NikeV2::Summary)
12
- person.summary.experience_types.include?('FUELBAND').should be_true
13
- person.summary.summaries.length.should == 2
12
+ person.summary.activity_types.collect(&:to_s).include?('Fuel Band').should be_true
13
+ person.summary.fuelband.should_not be_nil
14
14
  end
15
15
  end
16
16
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nike_v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-28 00:00:00.000000000 Z
12
+ date: 2013-02-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 0.10.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: alchemist
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.1.3
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.3
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: factory_girl
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -125,6 +141,8 @@ files:
125
141
  - lib/nike_v2/base.rb
126
142
  - lib/nike_v2/experience_type.rb
127
143
  - lib/nike_v2/gps_data.rb
144
+ - lib/nike_v2/metric.rb
145
+ - lib/nike_v2/metrics.rb
128
146
  - lib/nike_v2/person.rb
129
147
  - lib/nike_v2/resource.rb
130
148
  - lib/nike_v2/summary.rb
@@ -139,6 +157,8 @@ files:
139
157
  - spec/nike_v2/activity_spec.rb
140
158
  - spec/nike_v2/base_spec.rb
141
159
  - spec/nike_v2/gps_data_spec.rb
160
+ - spec/nike_v2/metric_spec.rb
161
+ - spec/nike_v2/metrics_spec.rb
142
162
  - spec/nike_v2/person_spec.rb
143
163
  - spec/nike_v2/resource_spec.rb
144
164
  - spec/nike_v2/summary_spec.rb
@@ -178,6 +198,8 @@ test_files:
178
198
  - spec/nike_v2/activity_spec.rb
179
199
  - spec/nike_v2/base_spec.rb
180
200
  - spec/nike_v2/gps_data_spec.rb
201
+ - spec/nike_v2/metric_spec.rb
202
+ - spec/nike_v2/metrics_spec.rb
181
203
  - spec/nike_v2/person_spec.rb
182
204
  - spec/nike_v2/resource_spec.rb
183
205
  - spec/nike_v2/summary_spec.rb