gosquared 3.0.0 → 3.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a28ba573c7c4ac3be32473ccc6df89546b1c5e0
4
- data.tar.gz: c1b82ddea06097342afda3f559959710fafabe6f
3
+ metadata.gz: 88379cf385bcdca47258e96149e3f9f9d0534b2d
4
+ data.tar.gz: 97592708e18c0a9627d433c8fdb0c91c11a94ddd
5
5
  SHA512:
6
- metadata.gz: 16972501f8547234d8da365bd7fe7a70e82141498645ae7a037a9fe18c4ab2cdea87d0a53643c3b43449227312088321b2d7deec100be3beb96178cbe01f51af
7
- data.tar.gz: bdbd18ffd887c741987dba375eb35a2962abbd0866be972b1f990f4d22d9212bb56c6337e81de157297383c000cb5bb6249f0780f407f65a25fc3615fd0b4592
6
+ metadata.gz: a14fab23a886e2a959f3a1ac5d92e0cc8d15f5be5ce8f576bdf9551e40a2cda00d9ebd4dfc27836293e778ced178f6b32712932017dbab9ee49d06c6ded1889c
7
+ data.tar.gz: 45ad5d99aa0b145a03e4997f78b57c27853e3d993e18896095f62b494cc0e8489f1df5bf94a3f0ba88e271b3f360409f2a23a722163dd36bcfc9345917b5208a
@@ -1,31 +1,41 @@
1
1
  require_relative "client"
2
- class Tracking
2
+ class Tracking
3
3
 
4
- BASEURL = "https://api.gosquared.com/tracking/v1/"
5
- DIMENSIONS = %w(event identify pageview ping properties timeout transaction)
4
+ BASEURL = "https://api.gosquared.com/tracking/v1/"
5
+ DIMENSIONS = %w(event identify pageview ping properties timeout transaction)
6
6
 
7
- def initialize(api_key, site_token, client=Client.new)
8
- @site_token = site_token
9
- @api_key = api_key
10
- @client = client
11
- end
7
+ def initialize(api_key, site_token, client=Client.new)
8
+ @site_token = site_token
9
+ @api_key = api_key
10
+ @client = client
11
+ end
12
12
 
13
- DIMENSIONS.each do |dimension|
14
- define_method dimension do |options|
15
- @dimension = dimension
16
- @data = options
17
- self
18
- end
13
+ DIMENSIONS.each do |dimension|
14
+ define_method dimension do |options|
15
+ @dimension = dimension
16
+ @data = options
17
+ self
19
18
  end
19
+ end
20
20
 
21
- def post
22
- response = @client.post(url, @data)
23
- @data = nil if response.code === '200'
24
- response
25
- end
21
+ def post
22
+ check_for_nil_user
23
+ response = @client.post(url, @data)
24
+ @data = nil if response.code === '200'
25
+ response
26
+ end
26
27
 
27
- def url
28
- url = BASEURL + @dimension + "?api_key=#{@api_key}" + "&site_token=#{@site_token}"
29
- end
28
+ def url
29
+ url = BASEURL + @dimension + "?api_key=#{@api_key}" + "&site_token=#{@site_token}"
30
+ end
31
+
32
+ private
30
33
 
34
+ def check_for_nil_user
35
+ if @data.key?(:person_id) && @data[:person_id] == nil
36
+ @data.tap { |data| @data.delete(:person_id) }
37
+ warn 'person_id is nil, event will not be track against a user'
38
+ end
31
39
  end
40
+
41
+ end
@@ -1,21 +1,50 @@
1
- describe Tracking do
1
+ describe Tracking do
2
2
  subject(:gs) { described_class.new("demo", "GSN-2194840-F") }
3
3
 
4
- Tracking::DIMENSIONS.each do |dimension|
5
- before do
4
+ Tracking::DIMENSIONS.each do |dimension|
5
+ before do
6
6
  stub_request(:post, "https://api.gosquared.com/tracking/v1/#{dimension}?api_key=demo&site_token=GSN-2194840-F").
7
7
  with(:body => "[ {\"person_id\":\"email:test@example.com\",\"properties\":{\"email\":\"test@example.com\"}} ]",
8
- :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
8
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
9
9
  to_return(:status => 200, :body => "", :headers => {response: "success"})
10
10
  end
11
11
  end
12
12
 
13
- Tracking::DIMENSIONS.each do |dimension|
13
+ Tracking::DIMENSIONS.each do |dimension|
14
14
  it "posts a request to the GoSquared Track API with #{dimension} dimension" do
15
- gs.send "#{dimension}", ({person_id: "email:test@example.com",
15
+ gs.send "#{dimension}", ({person_id: "email:test@example.com",
16
16
  properties:{email: "test@example.com"}})
17
17
  expect(gs.post.code).to eq('200')
18
18
  end
19
19
  end
20
20
 
21
- end
21
+ describe "#event" do
22
+ before do
23
+ stub_request(:post, "https://api.gosquared.com/tracking/v1/event?api_key=demo&site_token=GSN-2194840-F").
24
+ with(:body => "[ {\"event\":{\"name\":\"event\"}} ]",
25
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
26
+ to_return(:status => 200, :body => "", :headers => {})
27
+ @data = {person_id: nil, event: { name: 'event' } }
28
+ end
29
+
30
+ it 'Tracks an anonymous event when a person_id is nil' do
31
+ gs.event(@data)
32
+ expect(gs.post.code).to eq('200')
33
+ end
34
+
35
+ before do
36
+ stub_request(:post, "https://api.gosquared.com/tracking/v1/event?api_key=demo&site_token=GSN-2194840-F").
37
+ with(:body => "[ {\"person_id\":\"12345\",\"event\":{\"name\":\"event\"}} ]",
38
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
39
+ to_return(:status => 200, :body => "", :headers => {})
40
+ @data = {person_id: '12345', event: { name: 'event' } }
41
+ end
42
+
43
+ it 'Tracks an anonymous event when a person_id is not nil' do
44
+ gs.event(@data)
45
+ expect(gs.post.code).to eq('200')
46
+ end
47
+
48
+ end
49
+
50
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gosquared
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Russell Vaughan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-10 00:00:00.000000000 Z
11
+ date: 2016-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec