analytics-ruby 2.0.3 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,12 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- analytics-ruby (2.0.2)
4
+ analytics-ruby (2.0.5)
5
+ json (~> 1.7)
5
6
 
6
7
  GEM
7
8
  remote: http://rubygems.org/
8
9
  specs:
10
+ activesupport (3.2.18)
11
+ i18n (~> 0.6, >= 0.6.4)
12
+ multi_json (~> 1.0)
9
13
  diff-lcs (1.2.5)
14
+ i18n (0.6.9)
15
+ json (1.8.1)
16
+ multi_json (1.10.1)
10
17
  predicated (0.2.6)
11
18
  rake (10.3.1)
12
19
  rspec (2.14.1)
@@ -23,6 +30,10 @@ GEM
23
30
  ruby_parser (3.6.1)
24
31
  sexp_processor (~> 4.1)
25
32
  sexp_processor (4.4.3)
33
+ thread_safe (0.3.4)
34
+ thread_safe (0.3.4-java)
35
+ tzinfo (1.2.1)
36
+ thread_safe (~> 0.1)
26
37
  wrong (0.7.1)
27
38
  diff-lcs (~> 1.2.5)
28
39
  predicated (~> 0.2.6)
@@ -41,7 +52,9 @@ PLATFORMS
41
52
  ruby
42
53
 
43
54
  DEPENDENCIES
55
+ activesupport (>= 3.0.0, < 4.0.0)
44
56
  analytics-ruby!
45
57
  rake (~> 10.3)
46
58
  rspec (~> 2.0)
59
+ tzinfo (= 1.2.1)
47
60
  wrong (~> 0.0)
data/History.md CHANGED
@@ -1,3 +1,7 @@
1
+ 2.0.4 / 2014-06-11
2
+ ==================
3
+ * fix: isofying trait dates in #group
4
+
1
5
  2.0.3 / 2014-06-04
2
6
  ==================
3
7
  * fix: undefined method `is_requesting?' for nil:NilClass when calling flush (#51)
@@ -18,4 +18,6 @@ Gem::Specification.new do |spec|
18
18
  spec.add_development_dependency 'rake', '~> 10.3'
19
19
  spec.add_development_dependency 'wrong', '~> 0.0'
20
20
  spec.add_development_dependency 'rspec', '~> 2.0'
21
+ spec.add_development_dependency 'tzinfo', '1.2.1'
22
+ spec.add_development_dependency 'activesupport', '>= 3.0.0', '<4.0.0'
21
23
  end
@@ -162,6 +162,7 @@ module Segment
162
162
  context = options[:context] || {}
163
163
 
164
164
  fail ArgumentError, '.traits must be a hash' unless traits.is_a? Hash
165
+ isoify_dates! traits
165
166
 
166
167
  check_presence! group_id, 'group_id'
167
168
  check_timestamp! timestamp
@@ -49,10 +49,11 @@ module Segment
49
49
  end
50
50
 
51
51
  def datetime_in_iso8601 datetime
52
- if datetime.is_a? Date
52
+ case datetime
53
+ when Time, DateTime
54
+ time_in_iso8601 datetime
55
+ when Date
53
56
  date_in_iso8601 datetime
54
- elsif datetime.is_a? Time
55
- time_in_iso8601 datetime
56
57
  else
57
58
  datetime
58
59
  end
@@ -1,5 +1,5 @@
1
1
  module Segment
2
2
  class Analytics
3
- VERSION = '2.0.3'
3
+ VERSION = '2.0.5'
4
4
  end
5
5
  end
@@ -65,17 +65,23 @@ module Segment
65
65
  @queue.pop
66
66
  end
67
67
 
68
- it 'should convert Time properties into iso8601 format' do
68
+ it 'should convert time and date traits into iso8601 format' do
69
69
  @client.track({
70
70
  :user_id => 'user',
71
71
  :event => 'Event',
72
72
  :properties => {
73
73
  :time => Time.utc(2013),
74
+ :time_with_zone => Time.zone.parse('2013-01-01'),
75
+ :date_time => DateTime.new(2013,1,1),
76
+ :date => Date.new(2013,1,1),
74
77
  :nottime => 'x'
75
78
  }
76
79
  })
77
80
  message = @queue.pop
78
81
  message[:properties][:time].should == '2013-01-01T00:00:00Z'
82
+ message[:properties][:time_with_zone].should == '2013-01-01T00:00:00Z'
83
+ message[:properties][:date_time].should == '2013-01-01T00:00:00Z'
84
+ message[:properties][:date].should == '2013-01-01'
79
85
  message[:properties][:nottime].should == 'x'
80
86
  end
81
87
  end
@@ -101,16 +107,22 @@ module Segment
101
107
  @queue.pop
102
108
  end
103
109
 
104
- it 'should convert Time traits into iso8601 format' do
110
+ it 'should convert time and date traits into iso8601 format' do
105
111
  @client.identify({
106
112
  :user_id => 'user',
107
113
  :traits => {
108
114
  :time => Time.utc(2013),
115
+ :time_with_zone => Time.zone.parse('2013-01-01'),
116
+ :date_time => DateTime.new(2013,1,1),
117
+ :date => Date.new(2013,1,1),
109
118
  :nottime => 'x'
110
119
  }
111
120
  })
112
121
  message = @queue.pop
113
122
  message[:traits][:time].should == '2013-01-01T00:00:00Z'
123
+ message[:traits][:time_with_zone].should == '2013-01-01T00:00:00Z'
124
+ message[:traits][:date_time].should == '2013-01-01T00:00:00Z'
125
+ message[:traits][:date].should == '2013-01-01'
114
126
  message[:traits][:nottime].should == 'x'
115
127
  end
116
128
  end
@@ -140,6 +152,11 @@ module Segment
140
152
  describe '#group' do
141
153
  before :all do
142
154
  @client = Client.new :write_key => WRITE_KEY
155
+ @queue = @client.instance_variable_get :@queue
156
+ end
157
+
158
+ after :each do
159
+ @client.flush
143
160
  end
144
161
 
145
162
  it 'should error without group_id' do
@@ -157,6 +174,26 @@ module Segment
157
174
  it 'should not error with the required options as strings' do
158
175
  @client.group Utils.stringify_keys(Queued::GROUP)
159
176
  end
177
+
178
+ it 'should convert time and date traits into iso8601 format' do
179
+ @client.identify({
180
+ :user_id => 'user',
181
+ :group_id => 'group',
182
+ :traits => {
183
+ :time => Time.utc(2013),
184
+ :time_with_zone => Time.zone.parse('2013-01-01'),
185
+ :date_time => DateTime.new(2013,1,1),
186
+ :date => Date.new(2013,1,1),
187
+ :nottime => 'x'
188
+ }
189
+ })
190
+ message = @queue.pop
191
+ message[:traits][:time].should == '2013-01-01T00:00:00Z'
192
+ message[:traits][:time_with_zone].should == '2013-01-01T00:00:00Z'
193
+ message[:traits][:date_time].should == '2013-01-01T00:00:00Z'
194
+ message[:traits][:date].should == '2013-01-01'
195
+ message[:traits][:nottime].should == 'x'
196
+ end
160
197
  end
161
198
 
162
199
  describe '#page' do
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  require 'segment/analytics'
2
2
  require 'wrong'
3
+ require 'active_support/time'
3
4
 
4
5
  include Wrong
5
6
 
7
+ # Setting timezone for ActiveSupport::TimeWithZone to UTC
8
+ Time.zone = 'UTC'
9
+
6
10
  module Segment
7
11
  class Analytics
8
12
  WRITE_KEY = 'testsecret'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analytics-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-05 00:00:00.000000000 Z
12
+ date: 2014-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &13866940 !ruby/object:Gem::Requirement
16
+ requirement: &18470280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '10.3'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *13866940
24
+ version_requirements: *18470280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: wrong
27
- requirement: &13866440 !ruby/object:Gem::Requirement
27
+ requirement: &18469780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *13866440
35
+ version_requirements: *18469780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &13865980 !ruby/object:Gem::Requirement
38
+ requirement: &18469320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,14 +43,39 @@ dependencies:
43
43
  version: '2.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *13865980
46
+ version_requirements: *18469320
47
+ - !ruby/object:Gem::Dependency
48
+ name: tzinfo
49
+ requirement: &18468860 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 1.2.1
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *18468860
58
+ - !ruby/object:Gem::Dependency
59
+ name: activesupport
60
+ requirement: &18468380 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 3.0.0
66
+ - - <
67
+ - !ruby/object:Gem::Version
68
+ version: 4.0.0
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: *18468380
47
72
  description: The Segment.io ruby analytics library
48
73
  email: friends@segment.io
49
74
  executables: []
50
75
  extensions: []
51
76
  extra_rdoc_files: []
52
77
  files:
53
- - analytics-ruby-2.0.3.gem
78
+ - analytics-ruby-2.0.5.gem
54
79
  - analytics-ruby.gemspec
55
80
  - Gemfile
56
81
  - Gemfile.lock