staccato 0.2.1 → 0.3.0
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +52 -0
- data/lib/staccato/adapter/faraday.rb +18 -0
- data/lib/staccato/adapter/http.rb +13 -0
- data/lib/staccato/adapter/net_http.rb +17 -0
- data/lib/staccato/tracker.rb +12 -3
- data/lib/staccato/version.rb +1 -1
- data/lib/staccato.rb +9 -7
- data/spec/integration/measurement/checkout_option_spec.rb +2 -2
- data/spec/integration/measurement/checkout_spec.rb +2 -2
- data/spec/integration/measurement/product_impression_spec.rb +2 -2
- data/spec/integration/measurement/product_spec.rb +2 -2
- data/spec/integration/measurement/promotion_spec.rb +2 -2
- data/spec/integration/measurement/transaction_spec.rb +2 -2
- data/spec/integration/noop_tracker_spec.rb +9 -9
- data/spec/integration/tracker_spec.rb +11 -11
- data/spec/lib/stacatto_spec.rb +2 -2
- data/spec/lib/staccato/event_spec.rb +7 -7
- data/spec/lib/staccato/pageview_spec.rb +10 -10
- data/spec/lib/staccato/tracker_spec.rb +4 -4
- data/spec/spec_helper.rb +0 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77a4bb9be23d9d9cefe9806374d07466fe8720bb
|
4
|
+
data.tar.gz: 5a8c255a6a421a29bbe66552db15e16e4d2c2400
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca6efa1c2142f14c64ee0860bb9687d8b0fa4a8f4eb39ef3d068b031bc99ce90de0ee408c8365c355b6f8d9e6e1adcd0085e79f34a7445eb0694b55a1d4f6bdb
|
7
|
+
data.tar.gz: 4a492e972ea4776380c7ed2f041323bdffacca2c02feefab612ab96952e148a18038640c9ae2fbfbbcae3916a81851973c52a25980cbccdaf28bec90c9aa8c88
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -414,6 +414,58 @@ https://developers.google.com/analytics/devguides/collection/protocol/v1/devguid
|
|
414
414
|
https://developers.google.com/analytics/devguides/collection/protocol/v1/reference
|
415
415
|
https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
|
416
416
|
|
417
|
+
## HTTP Adapters ##
|
418
|
+
|
419
|
+
Staccato provides a number of basic adapters to different ruby http libraries. By default, Staccato uses `net/http` when you create a new tracker. If you are using Faraday or [The Ruby HTTP library](https://github.com/httprb/http.rb) Staccato provides adapters.
|
420
|
+
|
421
|
+
```ruby
|
422
|
+
tracker = Staccato.tracker('UA-XXXX-Y') do |c|
|
423
|
+
c.adapter = Staccato::Adapter::Faraday.new(Stacatto.ga_collection_uri) do |faraday|
|
424
|
+
# further faraday configuration here
|
425
|
+
end
|
426
|
+
end
|
427
|
+
```
|
428
|
+
|
429
|
+
You can also make your own Adapters by implementing any class that responds to `post` with a hash of params/data to be posted. The default adapters all accept the URI in the initializer, but this is not a requirement for yours.
|
430
|
+
|
431
|
+
One such example might be for a new `net/http` adapter which accepts more options for configuring the connection:
|
432
|
+
|
433
|
+
```ruby
|
434
|
+
class CustomerAdapter
|
435
|
+
attr_reader :uri
|
436
|
+
|
437
|
+
def initialize(uri, options={})
|
438
|
+
@uri = uri
|
439
|
+
@options = options
|
440
|
+
end
|
441
|
+
|
442
|
+
def post(data)
|
443
|
+
Net::HTTP::Post.new(uri.request_uri).tap do |request|
|
444
|
+
request.read_timeout = @options.fetch(:read_timeout, 90)
|
445
|
+
request.form_data = data
|
446
|
+
|
447
|
+
execute(request)
|
448
|
+
end
|
449
|
+
end
|
450
|
+
|
451
|
+
private
|
452
|
+
def execute(request)
|
453
|
+
Net::HTTP.new(uri.hostname, uri.port).start do |http|
|
454
|
+
http.open_timeout = @options.fetch(:open_timeout, 90)
|
455
|
+
http.request(request)
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
```
|
460
|
+
|
461
|
+
Which would be used like:
|
462
|
+
|
463
|
+
```ruby
|
464
|
+
tracker = Staccato.tracker('UA-XXXX-Y') do |c|
|
465
|
+
c.adapter = CustomAdapter.new(Stacatto.ga_collection_uri, read_timeout: 1, open_time: 1)
|
466
|
+
end
|
467
|
+
```
|
468
|
+
|
417
469
|
## Contributing ##
|
418
470
|
|
419
471
|
1. Fork it
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Staccato
|
2
|
+
module Adapter
|
3
|
+
class Faraday # The Faraday Adapter
|
4
|
+
def initialize(uri)
|
5
|
+
@connection = Faraday.new(uri) do |faraday|
|
6
|
+
faraday.request :url_encoded # form-encode POST params
|
7
|
+
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
8
|
+
|
9
|
+
yield faraday if block_given?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def post(params)
|
14
|
+
@connection.post(nil, params)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
module Staccato
|
4
|
+
module Adapter
|
5
|
+
module Net
|
6
|
+
class HTTP # The net/http Standard Library Adapter
|
7
|
+
def initialize(uri)
|
8
|
+
@uri = uri
|
9
|
+
end
|
10
|
+
|
11
|
+
def post(params)
|
12
|
+
::Net::HTTP.post_form(@uri, params)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/staccato/tracker.rb
CHANGED
@@ -4,6 +4,7 @@ module Staccato
|
|
4
4
|
#
|
5
5
|
# @author Tony Pitale
|
6
6
|
class Tracker
|
7
|
+
attr_writer :adapter
|
7
8
|
attr_accessor :hit_defaults
|
8
9
|
|
9
10
|
# sets up a new tracker
|
@@ -132,14 +133,22 @@ module Staccato
|
|
132
133
|
# post the hit to GA collection endpoint
|
133
134
|
# @return [Net::HTTPOK] the GA api always returns 200 OK
|
134
135
|
def track(params={})
|
135
|
-
post(
|
136
|
+
post(params)
|
136
137
|
end
|
137
138
|
|
138
139
|
private
|
139
140
|
|
140
141
|
# @private
|
141
|
-
def post(
|
142
|
-
|
142
|
+
def post(params)
|
143
|
+
adapter.post(params)
|
144
|
+
end
|
145
|
+
|
146
|
+
def adapter
|
147
|
+
@adapter ||= begin
|
148
|
+
require 'staccato/adapter/net_http'
|
149
|
+
|
150
|
+
Staccato::Adapter::Net::HTTP.new(Staccato.ga_collection_uri)
|
151
|
+
end
|
143
152
|
end
|
144
153
|
end
|
145
154
|
|
data/lib/staccato/version.rb
CHANGED
data/lib/staccato.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'ostruct'
|
2
|
-
require 'net/http'
|
3
2
|
require 'forwardable'
|
4
3
|
require 'securerandom'
|
5
4
|
|
@@ -16,12 +15,14 @@ module Staccato
|
|
16
15
|
# @param id [String, nil] the id provided by google, i.e., `UA-XXXXXX-Y`
|
17
16
|
# @param client_id [String, Integer, nil] a unique id to track the session of
|
18
17
|
# an individual user
|
18
|
+
# @params hit_options [Hash] options for use in all hits from this tracker
|
19
|
+
# @yield [Staccato::Tracker] the new tracker
|
19
20
|
# @return [Staccato::Tracker] a new tracker is returned
|
20
21
|
def self.tracker(id, client_id = nil, hit_options = {})
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
klass = id.nil? ? Staccato::NoopTracker : Staccato::Tracker
|
23
|
+
|
24
|
+
klass.new(id, client_id, hit_options).tap do |tracker|
|
25
|
+
yield tracker if block_given?
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
@@ -33,8 +34,9 @@ module Staccato
|
|
33
34
|
end
|
34
35
|
|
35
36
|
# The tracking endpoint we use to submit requests to GA
|
36
|
-
def self.
|
37
|
-
|
37
|
+
def self.ga_collection_uri(ssl = false)
|
38
|
+
url = (ssl ? 'https://ssl' : 'http://www') + '.google-analytics.com/collect'
|
39
|
+
URI(url)
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Measurement::CheckoutOption do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -30,7 +30,7 @@ describe Staccato::Measurement::CheckoutOption do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'tracks the measurment' do
|
33
|
-
Net::HTTP.
|
33
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
34
34
|
'v' => 1,
|
35
35
|
'tid' => 'UA-XXXX-Y',
|
36
36
|
'cid' => '555',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Measurement::Checkout do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -30,7 +30,7 @@ describe Staccato::Measurement::Checkout do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'tracks the measurment' do
|
33
|
-
Net::HTTP.
|
33
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
34
34
|
'v' => 1,
|
35
35
|
'tid' => 'UA-XXXX-Y',
|
36
36
|
'cid' => '555',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Measurement::ProductImpression do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -39,7 +39,7 @@ describe Staccato::Measurement::ProductImpression do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'tracks the measurment' do
|
42
|
-
Net::HTTP.
|
42
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
43
43
|
'v' => 1,
|
44
44
|
'tid' => 'UA-XXXX-Y',
|
45
45
|
'cid' => '555',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Measurement::Product do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -41,7 +41,7 @@ describe Staccato::Measurement::Product do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'tracks the measurment' do
|
44
|
-
Net::HTTP.
|
44
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
45
45
|
'v' => 1,
|
46
46
|
'tid' => 'UA-XXXX-Y',
|
47
47
|
'cid' => '555',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Measurement::Promotion do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -33,7 +33,7 @@ describe Staccato::Measurement::Promotion do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'tracks the measurment' do
|
36
|
-
Net::HTTP.
|
36
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
37
37
|
'v' => 1,
|
38
38
|
'tid' => 'UA-XXXX-Y',
|
39
39
|
'cid' => '555',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Measurement::Transaction do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -35,7 +35,7 @@ describe Staccato::Measurement::Transaction do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'tracks the measurment' do
|
38
|
-
Net::HTTP.
|
38
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
39
39
|
'v' => 1,
|
40
40
|
'tid' => 'UA-XXXX-Y',
|
41
41
|
'cid' => '555',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::NoopTracker do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker(nil)}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -16,7 +16,7 @@ describe Staccato::NoopTracker do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'does not track page path and page title' do
|
19
|
-
Net::HTTP.
|
19
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -31,7 +31,7 @@ describe Staccato::NoopTracker do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'does not track event category, action, label, value' do
|
34
|
-
Net::HTTP.
|
34
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -45,7 +45,7 @@ describe Staccato::NoopTracker do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'does not track social action, network, target' do
|
48
|
-
Net::HTTP.
|
48
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -58,7 +58,7 @@ describe Staccato::NoopTracker do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'does not track exception description and fatality' do
|
61
|
-
Net::HTTP.
|
61
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -73,7 +73,7 @@ describe Staccato::NoopTracker do
|
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'does not track user timing category, variable, label, and time' do
|
76
|
-
Net::HTTP.
|
76
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -92,11 +92,11 @@ describe Staccato::NoopTracker do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it 'does not track user timing category, variable, label, and time' do
|
95
|
-
Net::HTTP.
|
95
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
96
96
|
end
|
97
97
|
|
98
98
|
it 'yields to the block' do
|
99
|
-
codez.
|
99
|
+
expect(codez).to have_received(:test)
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
@@ -106,7 +106,7 @@ describe Staccato::NoopTracker do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it 'does not send a post request' do
|
109
|
-
Net::HTTP.
|
109
|
+
expect(Net::HTTP).to have_received(:post_form).never
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Staccato::Tracker do
|
4
|
-
let(:uri) {Staccato.
|
4
|
+
let(:uri) {Staccato.ga_collection_uri}
|
5
5
|
let(:tracker) {Staccato.tracker('UA-XXXX-Y')}
|
6
6
|
let(:response) {stub(:body => '', :status => 201)}
|
7
7
|
|
@@ -16,7 +16,7 @@ describe Staccato::Tracker do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'tracks page path and page title' do
|
19
|
-
Net::HTTP.
|
19
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
20
20
|
'v' => 1,
|
21
21
|
'tid' => 'UA-XXXX-Y',
|
22
22
|
'cid' => '555',
|
@@ -39,7 +39,7 @@ describe Staccato::Tracker do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'tracks event category, action, label, value' do
|
42
|
-
Net::HTTP.
|
42
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
43
43
|
'v' => 1,
|
44
44
|
'tid' => 'UA-XXXX-Y',
|
45
45
|
'cid' => '555',
|
@@ -62,7 +62,7 @@ describe Staccato::Tracker do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'tracks social action, network, target' do
|
65
|
-
Net::HTTP.
|
65
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
66
66
|
'v' => 1,
|
67
67
|
'tid' => 'UA-XXXX-Y',
|
68
68
|
'cid' => '555',
|
@@ -84,7 +84,7 @@ describe Staccato::Tracker do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
it 'tracks exception description and fatality' do
|
87
|
-
Net::HTTP.
|
87
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
88
88
|
'v' => 1,
|
89
89
|
'tid' => 'UA-XXXX-Y',
|
90
90
|
'cid' => '555',
|
@@ -107,7 +107,7 @@ describe Staccato::Tracker do
|
|
107
107
|
end
|
108
108
|
|
109
109
|
it 'tracks user timing category, variable, label, and time' do
|
110
|
-
Net::HTTP.
|
110
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
111
111
|
'v' => 1,
|
112
112
|
'tid' => 'UA-XXXX-Y',
|
113
113
|
'cid' => '555',
|
@@ -135,7 +135,7 @@ describe Staccato::Tracker do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
it 'tracks user timing category, variable, label, and time' do
|
138
|
-
Net::HTTP.
|
138
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
139
139
|
'v' => 1,
|
140
140
|
'tid' => 'UA-XXXX-Y',
|
141
141
|
'cid' => '555',
|
@@ -148,7 +148,7 @@ describe Staccato::Tracker do
|
|
148
148
|
end
|
149
149
|
|
150
150
|
it 'yields to the block' do
|
151
|
-
codez.
|
151
|
+
expect(codez).to have_received(:test)
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
@@ -168,7 +168,7 @@ describe Staccato::Tracker do
|
|
168
168
|
end
|
169
169
|
|
170
170
|
it 'tracks the transaction values' do
|
171
|
-
Net::HTTP.
|
171
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
172
172
|
'v' => 1,
|
173
173
|
'tid' => 'UA-XXXX-Y',
|
174
174
|
'cid' => '555',
|
@@ -199,7 +199,7 @@ describe Staccato::Tracker do
|
|
199
199
|
end
|
200
200
|
|
201
201
|
it 'tracks the item values' do
|
202
|
-
Net::HTTP.
|
202
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
203
203
|
'v' => 1,
|
204
204
|
'tid' => 'UA-XXXX-Y',
|
205
205
|
'cid' => '555',
|
@@ -224,7 +224,7 @@ describe Staccato::Tracker do
|
|
224
224
|
it 'tracks page path and default hostname' do
|
225
225
|
tracker.pageview(path: '/foobar')
|
226
226
|
|
227
|
-
Net::HTTP.
|
227
|
+
expect(Net::HTTP).to have_received(:post_form).with(uri, {
|
228
228
|
'v' => 1,
|
229
229
|
'tid' => 'UA-XXXX-Y',
|
230
230
|
'cid' => '555',
|
data/spec/lib/stacatto_spec.rb
CHANGED
@@ -7,13 +7,13 @@ describe Staccato do
|
|
7
7
|
let(:tracker) {Staccato.tracker 'UA-XXXX-Y'}
|
8
8
|
|
9
9
|
it 'has an assigned id' do
|
10
|
-
tracker.id.
|
10
|
+
expect(tracker.id).to eq('UA-XXXX-Y')
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'uses a uuid for the client_id' do
|
14
14
|
SecureRandom.stubs(:uuid).returns("a-uuid")
|
15
15
|
|
16
|
-
tracker.client_id.
|
16
|
+
expect(tracker.client_id).to eq('a-uuid')
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
@@ -15,23 +15,23 @@ describe Staccato::Event do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'has a category' do
|
18
|
-
event.category.
|
18
|
+
expect(event.category).to eq('video')
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'has a action' do
|
22
|
-
event.action.
|
22
|
+
expect(event.action).to eq('play')
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'has a label' do
|
26
|
-
event.label.
|
26
|
+
expect(event.label).to eq('cars')
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'has a value' do
|
30
|
-
event.value.
|
30
|
+
expect(event.value).to eq(12)
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'has all params' do
|
34
|
-
event.params.
|
34
|
+
expect(event.params).to eq({
|
35
35
|
'v' => 1,
|
36
36
|
'tid' => 'UA-XXXX-Y',
|
37
37
|
'cid' => '555',
|
@@ -57,7 +57,7 @@ describe Staccato::Event do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'has all params' do
|
60
|
-
event.params.
|
60
|
+
expect(event.params).to eq({
|
61
61
|
'v' => 1,
|
62
62
|
'tid' => 'UA-XXXX-Y',
|
63
63
|
'cid' => '555',
|
@@ -76,7 +76,7 @@ describe Staccato::Event do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'has require params' do
|
79
|
-
event.params.
|
79
|
+
expect(event.params).to eq({
|
80
80
|
'v' => 1,
|
81
81
|
'tid' => 'UA-XXXX-Y',
|
82
82
|
'cid' => '555',
|
@@ -14,19 +14,19 @@ describe Staccato::Pageview do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'has a hostname' do
|
17
|
-
pageview.hostname.
|
17
|
+
expect(pageview.hostname).to eq('mysite.com')
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'has a path' do
|
21
|
-
pageview.path.
|
21
|
+
expect(pageview.path).to eq('/foobar')
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'has a title' do
|
25
|
-
pageview.title.
|
25
|
+
expect(pageview.title).to eq('FooBar')
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'has all params' do
|
29
|
-
pageview.params.
|
29
|
+
expect(pageview.params).to eq({
|
30
30
|
'v' => 1,
|
31
31
|
'tid' => 'UA-XXXX-Y',
|
32
32
|
'cid' => '555',
|
@@ -49,7 +49,7 @@ describe Staccato::Pageview do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'has all params' do
|
52
|
-
pageview.params.
|
52
|
+
expect(pageview.params).to eq({
|
53
53
|
'v' => 1,
|
54
54
|
'tid' => 'UA-XXXX-Y',
|
55
55
|
'cid' => '555',
|
@@ -67,7 +67,7 @@ describe Staccato::Pageview do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it 'has required params' do
|
70
|
-
pageview.params.
|
70
|
+
expect(pageview.params).to eq({
|
71
71
|
'v' => 1,
|
72
72
|
'tid' => 'UA-XXXX-Y',
|
73
73
|
'cid' => '555',
|
@@ -85,7 +85,7 @@ describe Staccato::Pageview do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'has experiment id and variant' do
|
88
|
-
pageview.params.
|
88
|
+
expect(pageview.params).to eq({
|
89
89
|
'v' => 1,
|
90
90
|
'tid' => 'UA-XXXX-Y',
|
91
91
|
'cid' => '555',
|
@@ -104,7 +104,7 @@ describe Staccato::Pageview do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'has session control param' do
|
107
|
-
pageview.params.
|
107
|
+
expect(pageview.params).to eq({
|
108
108
|
'v' => 1,
|
109
109
|
'tid' => 'UA-XXXX-Y',
|
110
110
|
'cid' => '555',
|
@@ -125,7 +125,7 @@ describe Staccato::Pageview do
|
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'has custom dimensions' do
|
128
|
-
pageview.params.
|
128
|
+
expect(pageview.params).to eq({
|
129
129
|
'v' => 1,
|
130
130
|
'tid' => 'UA-XXXX-Y',
|
131
131
|
'cid' => '555',
|
@@ -147,7 +147,7 @@ describe Staccato::Pageview do
|
|
147
147
|
end
|
148
148
|
|
149
149
|
it 'has custom dimensions' do
|
150
|
-
pageview.params.
|
150
|
+
expect(pageview.params).to eq({
|
151
151
|
'v' => 1,
|
152
152
|
'tid' => 'UA-XXXX-Y',
|
153
153
|
'cid' => '555',
|
@@ -15,11 +15,11 @@ describe Staccato::Tracker do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it "creates a new Pageview" do
|
18
|
-
Staccato::Pageview.
|
18
|
+
expect(Staccato::Pageview).to have_received(:new).with(tracker, path: '/foobar')
|
19
19
|
end
|
20
20
|
|
21
21
|
it "tracks on the Pageview" do
|
22
|
-
pageview.
|
22
|
+
expect(pageview).to have_received(:track!)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -34,11 +34,11 @@ describe Staccato::Tracker do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "creates a new Event" do
|
37
|
-
Staccato::Event.
|
37
|
+
expect(Staccato::Event).to have_received(:new).with(tracker, category: 'video', action: 'play')
|
38
38
|
end
|
39
39
|
|
40
40
|
it "tracks on the Event" do
|
41
|
-
event.
|
41
|
+
expect(event).to have_received(:track!)
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
data/spec/spec_helper.rb
CHANGED
@@ -13,7 +13,6 @@ require File.expand_path('../../lib/staccato', __FILE__)
|
|
13
13
|
RSpec.configure do |config|
|
14
14
|
config.mock_with :mocha
|
15
15
|
|
16
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
17
16
|
config.run_all_when_everything_filtered = true
|
18
17
|
config.filter_run :focus
|
19
18
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: staccato
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Pitale
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -111,6 +111,9 @@ files:
|
|
111
111
|
- README.md
|
112
112
|
- Rakefile
|
113
113
|
- lib/staccato.rb
|
114
|
+
- lib/staccato/adapter/faraday.rb
|
115
|
+
- lib/staccato/adapter/http.rb
|
116
|
+
- lib/staccato/adapter/net_http.rb
|
114
117
|
- lib/staccato/boolean_helpers.rb
|
115
118
|
- lib/staccato/event.rb
|
116
119
|
- lib/staccato/exception.rb
|
@@ -191,3 +194,4 @@ test_files:
|
|
191
194
|
- spec/lib/staccato/pageview_spec.rb
|
192
195
|
- spec/lib/staccato/tracker_spec.rb
|
193
196
|
- spec/spec_helper.rb
|
197
|
+
has_rdoc:
|