mixpanel 4.0.5 → 4.0.6

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.
data/README.md CHANGED
@@ -514,6 +514,7 @@ MixPanel.track("Front Page Load", {
514
514
  - 1.8.7 [Not supported anymore]
515
515
  - 1.9.2
516
516
  - 1.9.3
517
+ - 2.0.0
517
518
  - JRuby 1.8 Mode
518
519
  - JRuby 1.9 Mode
519
520
 
@@ -51,6 +51,10 @@ module Mixpanel::Person
51
51
  append 'people.increment', property, increment
52
52
  end
53
53
 
54
+ def append_track_charge(amount)
55
+ append 'people.track_charge', amount
56
+ end
57
+
54
58
  def append_register(properties={})
55
59
  append 'register', properties_hash(properties, PERSON_PROPERTIES)
56
60
  end
@@ -43,10 +43,12 @@ module Mixpanel
43
43
  (@env['HTTP_X_FORWARDED_FOR'] || @env['REMOTE_ADDR'] || '').split(',').last
44
44
  end
45
45
 
46
- # Walk through each property and see if it is in the special_properties. If so, change the key to have a $ in front of it.
46
+ # Walk through each property and see if it is in the special_properties.
47
+ # If so, change the key to have a $ in front of it.
47
48
  def properties_hash(properties, special_properties)
48
49
  properties.inject({}) do |props, (key, value)|
49
50
  key = "$#{key}" if special_properties.include?(key.to_s)
51
+ value = value.to_i if value.class == Time
50
52
  props[key.to_sym] = value
51
53
  props
52
54
  end
data/mixpanel.gemspec CHANGED
@@ -2,7 +2,7 @@ files = ['README.md', 'LICENSE', 'Rakefile', 'mixpanel.gemspec', '{spec,lib}/**/
2
2
 
3
3
  spec = Gem::Specification.new do |s|
4
4
  s.name = "mixpanel"
5
- s.version = "4.0.5"
5
+ s.version = "4.0.6"
6
6
  s.rubyforge_project = "mixpanel"
7
7
  s.description = "Simple lib to track events in Mixpanel service. It can be used in any rack based framework."
8
8
  s.author = "Alvaro Gil"
@@ -127,14 +127,18 @@ describe Mixpanel::Tracker do
127
127
  end
128
128
 
129
129
  it "should append simple events" do
130
- props = { :time => Time.now, :ip => 'ASDF' }
130
+ time = Time.now
131
+ props = { :time => time, :ip => 'ASDF' }
131
132
  @mixpanel.append_track "Sign up", props
133
+ props[:time] = time.to_i
132
134
  mixpanel_queue_should_include(@mixpanel, "track", "Sign up", props)
133
135
  end
134
136
 
135
137
  it "should append events with properties" do
136
- props = { :referer => 'http://example.com', :time => Time.now, :ip => 'ASDF' }
138
+ time = Time.now
139
+ props = { :referer => 'http://example.com', :time => time, :ip => 'ASDF' }
137
140
  @mixpanel.append_track "Sign up", props
141
+ props[:time] = time.to_i
138
142
  mixpanel_queue_should_include(@mixpanel, "track", "Sign up", props)
139
143
  end
140
144
 
@@ -154,6 +158,11 @@ describe Mixpanel::Tracker do
154
158
  mixpanel_queue_should_include(@mixpanel, 'register', props)
155
159
  end
156
160
 
161
+ it "should allow the tracking of charges in JS" do
162
+ @mixpanel.append_track_charge 40
163
+ mixpanel_queue_should_include(@mixpanel, 'people.track_charge', 40)
164
+ end
165
+
157
166
  it "should allow alias to be called through the JS api" do
158
167
  @mixpanel.append_alias "new_id"
159
168
  mixpanel_queue_should_include(@mixpanel, "alias", "new_id")
@@ -194,4 +203,21 @@ describe Mixpanel::Tracker do
194
203
  w2.should_not == w
195
204
  end
196
205
  end
206
+
207
+ describe '#properties_hash' do
208
+ it "base64encodes json formatted data" do
209
+ properties = { :a => 4, :b => "foo"}
210
+ special_properties = ["a"]
211
+ hash = @mixpanel.send(:properties_hash, properties, special_properties)
212
+ hash.should eq({ :'$a' => 4, :b => "foo"})
213
+ end
214
+
215
+ it "converts Time objects into integers" do
216
+ time = Time.new
217
+ properties = { :a => time, :b => "foo"}
218
+ special_properties = []
219
+ hash = @mixpanel.send(:properties_hash, properties, special_properties)
220
+ hash.should eq({ :a => time.to_i, :b => "foo"})
221
+ end
222
+ end
197
223
  end
data/spec/spec_helper.rb CHANGED
@@ -8,12 +8,12 @@ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].e
8
8
 
9
9
  MIX_PANEL_TOKEN = "e2d8b0bea559147844ffab3d607d26a6"
10
10
 
11
-
11
+ # json hashes have string keys, convert to json and back to compare hashes
12
12
  def mixpanel_queue_should_include(mixpanel, type, *arguments)
13
- mixpanel.queue.each do |event_type, event_arguments|
14
- # hashes store keys in an undetermined order. convert to json and back and compare hash to hash, not json to json
15
- unjsonify(event_arguments).should == json_and_back(arguments)
16
- end
13
+ event = mixpanel.queue.detect { |event| event[0] == type }
14
+ event.should_not be_nil
15
+ event_arguments = event[1]
16
+ unjsonify(event_arguments).should == json_and_back(arguments)
17
17
  end
18
18
 
19
19
  def json_and_back array
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixpanel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.5
4
+ version: 4.0.6
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: 2013-08-26 00:00:00.000000000Z
12
+ date: 2013-09-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &2156203980 !ruby/object:Gem::Requirement
16
+ requirement: &2153726180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156203980
24
+ version_requirements: *2153726180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rack
27
- requirement: &2156203540 !ruby/object:Gem::Requirement
27
+ requirement: &2153725740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2156203540
35
+ version_requirements: *2153725740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: escape
38
- requirement: &2156203120 !ruby/object:Gem::Requirement
38
+ requirement: &2153725320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2156203120
46
+ version_requirements: *2153725320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &2156202700 !ruby/object:Gem::Requirement
49
+ requirement: &2153724900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2156202700
57
+ version_requirements: *2153724900
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rack-test
60
- requirement: &2156278040 !ruby/object:Gem::Requirement
60
+ requirement: &2153724480 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2156278040
68
+ version_requirements: *2153724480
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
- requirement: &2156277620 !ruby/object:Gem::Requirement
71
+ requirement: &2153724060 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2156277620
79
+ version_requirements: *2153724060
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: nokogiri
82
- requirement: &2156277200 !ruby/object:Gem::Requirement
82
+ requirement: &2153723640 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2156277200
90
+ version_requirements: *2153723640
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rake
93
- requirement: &2156276780 !ruby/object:Gem::Requirement
93
+ requirement: &2153723220 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2156276780
101
+ version_requirements: *2153723220
102
102
  description: Simple lib to track events in Mixpanel service. It can be used in any
103
103
  rack based framework.
104
104
  email: zevarito@gmail.com