analytical 1.3.0 → 1.4.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.
@@ -9,6 +9,9 @@ Service implementations include:
9
9
  * KISSMetrics[http://kissmetrics.com]
10
10
  * Hubspot[http://hubspot.com]
11
11
  * CrazyEgg[http://www.crazyegg.com]
12
+ * Chartbeat[http://chartbeat.com]
13
+ * comScore Direct[http://direct.comscore.com]
14
+ * Optimizely[http://www.optimizely.com]
12
15
 
13
16
  == Usage
14
17
 
@@ -28,12 +31,13 @@ Then, in your template files, you'll want to add the analytical helper methods f
28
31
  <!DOCTYPE html>
29
32
  <html>
30
33
  <head>
34
+ <%= raw analytical.head_prepend_javascript %>
31
35
  <title>Example</title>
32
36
  <%= stylesheet_link_tag :all %>
33
37
  <%= javascript_include_tag :defaults %>
34
38
  <%= csrf_meta_tag %>
35
39
  <% analytical.identify '5', :email=>'josh@transfs.com' %>
36
- <%= raw analytical.head_javascript %>
40
+ <%= raw analytical.head_append_javascript %>
37
41
  </head>
38
42
  <body>
39
43
  <%= raw analytical.body_prepend_javascript %>
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ begin
9
9
  gem.description = %Q{Gem for managing multiple analytics services in your rails app.}
10
10
  gem.email = "josh@transfs.com"
11
11
  gem.homepage = "http://github.com/jkrall/analytical"
12
- gem.authors = ["Joshua Krall"]
12
+ gem.authors = ["Joshua Krall", "Nathan Phelps"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
14
  gem.add_dependency "activesupport"
15
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
1
+ 1.4.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{analytical}
8
- s.version = "1.3.0"
8
+ s.version = "1.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Joshua Krall"]
12
- s.date = %q{2010-07-23}
11
+ s.authors = ["Joshua Krall", "Nathan Phelps"]
12
+ s.date = %q{2010-08-22}
13
13
  s.description = %q{Gem for managing multiple analytics services in your rails app.}
14
14
  s.email = %q{josh@transfs.com}
15
15
  s.extra_rdoc_files = [
@@ -79,19 +79,25 @@ Gem::Specification.new do |s|
79
79
  "lib/analytical/api.rb",
80
80
  "lib/analytical/base.rb",
81
81
  "lib/analytical/bot_detector.rb",
82
+ "lib/analytical/chartbeat.rb",
82
83
  "lib/analytical/clicky.rb",
84
+ "lib/analytical/comscore.rb",
83
85
  "lib/analytical/console.rb",
84
86
  "lib/analytical/crazy_egg.rb",
85
87
  "lib/analytical/google.rb",
86
88
  "lib/analytical/hubspot.rb",
87
89
  "lib/analytical/kiss_metrics.rb",
90
+ "lib/analytical/optimizely.rb",
88
91
  "rails/init.rb",
89
92
  "spec/analytical/api_spec.rb",
90
93
  "spec/analytical/base_spec.rb",
91
94
  "spec/analytical/bot_detector_spec.rb",
95
+ "spec/analytical/chartbeat_spec.rb",
92
96
  "spec/analytical/clicky_spec.rb",
97
+ "spec/analytical/comscore_spec.rb",
93
98
  "spec/analytical/google_spec.rb",
94
99
  "spec/analytical/kiss_metrics_spec.rb",
100
+ "spec/analytical/optimizely_spec.rb",
95
101
  "spec/analytical_spec.rb",
96
102
  "spec/config/analytical.yml",
97
103
  "spec/spec.opts",
@@ -106,9 +112,12 @@ Gem::Specification.new do |s|
106
112
  "spec/analytical/api_spec.rb",
107
113
  "spec/analytical/base_spec.rb",
108
114
  "spec/analytical/bot_detector_spec.rb",
115
+ "spec/analytical/chartbeat_spec.rb",
109
116
  "spec/analytical/clicky_spec.rb",
117
+ "spec/analytical/comscore_spec.rb",
110
118
  "spec/analytical/google_spec.rb",
111
119
  "spec/analytical/kiss_metrics_spec.rb",
120
+ "spec/analytical/optimizely_spec.rb",
112
121
  "spec/analytical_spec.rb",
113
122
  "spec/spec_helper.rb"
114
123
  ]
@@ -19,4 +19,10 @@ adwords:
19
19
  color: ffffff
20
20
  label: yyyyyyyyyyyyyyyy
21
21
  value: 0
22
-
22
+ chartbeat:
23
+ key: chartbeat_12345
24
+ domain: your.domain.com
25
+ comscore:
26
+ key: comscore_12345
27
+ optimizely:
28
+ key: optimizely_12345
@@ -49,9 +49,16 @@ module Analytical
49
49
  #
50
50
  # These methods return the javascript that should be inserted into each section of your layout
51
51
  #
52
- def head_javascript
53
- [init_javascript(:head), tracking_javascript(:head)].delete_if{|s| s.blank?}.join("\n")
52
+ def head_prepend_javascript
53
+ [init_javascript(:head_prepend), tracking_javascript(:head_prepend)].delete_if{|s| s.blank?}.join("\n")
54
54
  end
55
+
56
+ def head_append_javascript
57
+ [init_javascript(:head_append), tracking_javascript(:head_append)].delete_if{|s| s.blank?}.join("\n")
58
+ end
59
+
60
+ alias_method :head_javascript, :head_append_javascript
61
+
55
62
  def body_prepend_javascript
56
63
  [init_javascript(:body_prepend), tracking_javascript(:body_prepend)].delete_if{|s| s.blank?}.join("\n")
57
64
  end
@@ -46,7 +46,11 @@ module Analytical
46
46
  end
47
47
 
48
48
  def init_location?(location)
49
- @tracking_command_location==location
49
+ if @tracking_command_location.is_a?(Array)
50
+ @tracking_command_location.map { |item|item.to_sym }.include?(location.to_sym)
51
+ else
52
+ @tracking_command_location.to_sym == location.to_sym
53
+ end
50
54
  end
51
55
 
52
56
  def init_location(location, &block)
@@ -0,0 +1,49 @@
1
+ module Analytical
2
+ module Chartbeat
3
+ class Api
4
+ include Analytical::Base::Api
5
+
6
+ def initialize(parent, options={})
7
+ super
8
+ @tracking_command_location = [:head_prepend, :body_append]
9
+ end
10
+
11
+ def init_javascript(location)
12
+ init_location(location) do
13
+ case location.to_sym
14
+ when :head_prepend
15
+ js = <<-HTML
16
+ <!-- Analytical Head Init: Chartbeat -->
17
+ <script type="text/javascript">var _sf_startpt=(new Date()).getTime();</script>
18
+ HTML
19
+ js
20
+ when :body_append
21
+ js = <<-HTML
22
+ <!-- Analytical Body Init: Chartbeat -->
23
+ <script type="text/javascript">
24
+ var _sf_async_config={uid:#{options[:key]}, domain:"#{options[:domain]}"};
25
+ (function(){
26
+ function loadChartbeat() {
27
+ window._sf_endpt=(new Date()).getTime();
28
+ var e = document.createElement('script');
29
+ e.setAttribute('language', 'javascript');
30
+ e.setAttribute('type', 'text/javascript');
31
+ e.setAttribute('src',
32
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
33
+ "static.chartbeat.com/js/chartbeat.js");
34
+ document.body.appendChild(e);
35
+ }
36
+ var oldonload = window.onload;
37
+ window.onload = (typeof window.onload != 'function') ?
38
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
39
+ })();
40
+ </script>
41
+ HTML
42
+ js
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,25 @@
1
+ module Analytical
2
+ module Comscore
3
+ class Api
4
+ include Analytical::Base::Api
5
+
6
+ def initialize(parent, options={})
7
+ super
8
+ @tracking_command_location = :head_append
9
+ end
10
+
11
+ def init_javascript(location)
12
+ init_location(location) do
13
+ js = <<-HTML
14
+ <!-- Analytical Init: comScore -->
15
+ <script>document.write(unescape("%3Cscript src='" + (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js' %3E%3C/script%3E"));</script>
16
+ <script>COMSCORE.beacon({c1:2, c2:#{options[:key]}, c3:"", c4:"", c5:"", c6:"", c15:""});</script>
17
+ <noscript><img src="http://b.scorecardresearch.com/p?c1=2&c2=#{options[:key]}&c3=&c4=&c5=&c6=&c15=&cj=1" /></noscript>
18
+ HTML
19
+ js
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -5,7 +5,7 @@ module Analytical
5
5
 
6
6
  def initialize(parent, options={})
7
7
  super
8
- @tracking_command_location = :body_prepend
8
+ @tracking_command_location = :head_append
9
9
  end
10
10
 
11
11
  def init_javascript(location)
@@ -13,13 +13,13 @@ module Analytical
13
13
  js = <<-HTML
14
14
  <!-- Analytical Init: Google -->
15
15
  <script type="text/javascript">
16
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
17
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
18
- </script>
19
- <script type="text/javascript">
20
- var googleAnalyticsTracker = _gat._getTracker("#{options[:key]}");
21
- googleAnalyticsTracker._initData();
22
- googleAnalyticsTracker._trackPageview();
16
+ var _gaq = _gaq || [];
17
+ _gaq.push(['_setAccount', '#{options[:key]}'], ['_trackPageview']);
18
+ (function() {
19
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
20
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
21
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
22
+ })();
23
23
  </script>
24
24
  HTML
25
25
  js
@@ -27,7 +27,7 @@ module Analytical
27
27
  end
28
28
 
29
29
  def track(*args)
30
- "googleAnalyticsTracker._trackPageview(\"#{args.first}\");"
30
+ "_gaq.push(['_trackPageview'#{args.empty? ? ']' : ', "' + args.first + '"]'});"
31
31
  end
32
32
 
33
33
  end
@@ -0,0 +1,23 @@
1
+ module Analytical
2
+ module Optimizely
3
+ class Api
4
+ include Analytical::Base::Api
5
+
6
+ def initialize(parent, options={})
7
+ super
8
+ @tracking_command_location = :head_prepend
9
+ end
10
+
11
+ def init_javascript(location)
12
+ init_location(location) do
13
+ js = <<-HTML
14
+ <!-- Analytical Init: Optimizely -->
15
+ <script type="text/javascript">document.write(unescape("%3Cscript src='"+document.location.protocol+"//cdn.optimizely.com/js/#{options[:key]}.js' type='text/javascript'%3E%3C/script%3E"));</script>
16
+ HTML
17
+ js
18
+ end
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -19,6 +19,7 @@ describe "Analytical::Api" do
19
19
  Analytical::Console::Api.stub!(:new).and_return(@console = mock('console'))
20
20
  Analytical::Google::Api.stub!(:new).and_return(@google = mock('google'))
21
21
  Analytical::Clicky::Api.stub!(:new).and_return(@clicky = mock('clicky'))
22
+ Analytical::Chartbeat::Api.stub!(:new).and_return(@chartbeat = mock('chartbeat'))
22
23
 
23
24
  @api = Analytical::Api.new :modules=>[:console, :google]
24
25
  end
@@ -61,10 +62,11 @@ describe "Analytical::Api" do
61
62
 
62
63
  describe 'when accessing a module by name' do
63
64
  it 'should return the module api object' do
64
- @api = Analytical::Api.new :modules=>[:console, :google, :clicky]
65
+ @api = Analytical::Api.new :modules=>[:console, :google, :clicky, :chartbeat]
65
66
  @api.console.should == @console
66
67
  @api.clicky.should == @clicky
67
68
  @api.google.should == @google
69
+ @api.chartbeat.should == @chartbeat
68
70
  end
69
71
  end
70
72
 
@@ -77,13 +79,23 @@ describe "Analytical::Api" do
77
79
  @google.stub!(:initialized).and_return(false)
78
80
  @google.stub!(:process_queued_commands).and_return([])
79
81
  end
80
- describe '#head_javascript' do
82
+
83
+ describe '#head_prepend_javascript' do
84
+ it 'should return the javascript' do
85
+ @console.should_receive(:init_javascript).with(:head_prepend).and_return('console_a')
86
+ @google.should_receive(:init_javascript).with(:head_prepend).and_return('google_a')
87
+ @api.head_prepend_javascript.should == "console_a\ngoogle_a"
88
+ end
89
+ end
90
+
91
+ describe '#head_append_javascript' do
81
92
  it 'should return the javascript' do
82
- @console.should_receive(:init_javascript).with(:head).and_return('console_a')
83
- @google.should_receive(:init_javascript).with(:head).and_return('google_a')
84
- @api.head_javascript.should == "console_a\ngoogle_a"
93
+ @console.should_receive(:init_javascript).with(:head_append).and_return('console_a')
94
+ @google.should_receive(:init_javascript).with(:head_append).and_return('google_a')
95
+ @api.head_append_javascript.should == "console_a\ngoogle_a"
85
96
  end
86
97
  end
98
+
87
99
  describe '#body_prepend_javascript' do
88
100
  it 'should return the javascript' do
89
101
  @console.should_receive(:init_javascript).with(:body_prepend).and_return('console_b')
@@ -0,0 +1,38 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Analytical::Chartbeat::Api" do
4
+ before(:each) do
5
+ @parent = mock('api', :options=>{:chartbeat=>{:key=>1234, :domain =>'test.com'}})
6
+ end
7
+ describe 'on initialize' do
8
+ it 'should set the command_location' do
9
+ a = Analytical::Chartbeat::Api.new @parent, {:key=>1234}
10
+ a.tracking_command_location.should == [:head_prepend, :body_append]
11
+ end
12
+ it 'should set the options' do
13
+ a = Analytical::Chartbeat::Api.new @parent, {:key=>12345, :domain =>'abcdef.com'}
14
+ a.options.should == {:key=>12345, :domain => 'abcdef.com'}
15
+ end
16
+ end
17
+ describe '#track' do
18
+ it 'should return the tracking javascript' do
19
+ @api = Analytical::Chartbeat::Api.new @parent, {:key=>12345}
20
+ @api.track.should == ''
21
+ end
22
+ end
23
+ describe '#identify' do
24
+ it 'should return an empty string' do
25
+ @api = Analytical::Chartbeat::Api.new @parent, {:key=>12345}
26
+ @api.identify('nothing', {:matters=>'at all'}).should == ''
27
+ end
28
+ end
29
+ describe '#init_javascript' do
30
+ it 'should return the init javascript' do
31
+ @api = Analytical::Chartbeat::Api.new @parent, {:key=>12345, :domain =>'abcdef.com'}
32
+ @api.init_javascript(:head_prepend).should =~ /_sf_startpt=\(new.Date\(\)\)\.getTime\(\);/
33
+ @api.init_javascript(:head_append).should == ''
34
+ @api.init_javascript(:body_prepend).should == ''
35
+ @api.init_javascript(:body_append).should =~ /_sf_async_config=\{uid:12345,.*domain:"abcdef\.com"\};/
36
+ end
37
+ end
38
+ end
@@ -29,7 +29,8 @@ describe "Analytical::Clicky::Api" do
29
29
  describe '#init_javascript' do
30
30
  it 'should return the init javascript' do
31
31
  @api = Analytical::Clicky::Api.new @parent, {:key=>'abcdef'}
32
- @api.init_javascript(:head).should == ''
32
+ @api.init_javascript(:head_prepend).should == ''
33
+ @api.init_javascript(:head_append).should == ''
33
34
  @api.init_javascript(:body_prepend).should == ''
34
35
  @api.init_javascript(:body_append).should =~ /static.getclicky.com\/js/
35
36
  @api.init_javascript(:body_append).should =~ /abcdef/
@@ -0,0 +1,41 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Analytical::Comscore::Api" do
4
+ before(:each) do
5
+ @parent = mock('api', :options=>{:comscore=>{:key=>123}})
6
+ end
7
+ describe 'on initialize' do
8
+ it 'should set the command_location' do
9
+ a = Analytical::Comscore::Api.new @parent, {:key=>123}
10
+ a.tracking_command_location.should == :head_append
11
+ end
12
+ it 'should set the options' do
13
+ a = Analytical::Comscore::Api.new @parent, {:key=>1234}
14
+ a.options.should == {:key=>1234}
15
+ end
16
+ end
17
+ describe '#track' do
18
+ it 'should return the tracking javascript' do
19
+ @api = Analytical::Comscore::Api.new @parent, {:key=>123}
20
+ @api.track('pagename', {:some=>'data'}).should == ''
21
+ end
22
+ end
23
+
24
+ describe '#identify' do
25
+ it 'should return an empty string' do
26
+ @api = Analytical::Comscore::Api.new @parent, {:key=>123}
27
+ @api.identify('nothing', {:matters=>'at all'}).should == ''
28
+ end
29
+ end
30
+
31
+ describe '#init_javascript' do
32
+ it 'should return the init javascript' do
33
+ @api = Analytical::Comscore::Api.new @parent, {:key=>1234}
34
+ @api.init_javascript(:head_prepend).should == ''
35
+ @api.init_javascript(:head_append).should =~ /scorecardresearch.com\/beacon.js/
36
+ @api.init_javascript(:head_append).should =~ /1234/
37
+ @api.init_javascript(:body_prepend).should == ''
38
+ @api.init_javascript(:body_append).should == ''
39
+ end
40
+ end
41
+ end
@@ -7,7 +7,7 @@ describe "Analytical::Google::Api" do
7
7
  describe 'on initialize' do
8
8
  it 'should set the command_location' do
9
9
  a = Analytical::Google::Api.new @parent, {:key=>'abc'}
10
- a.tracking_command_location.should == :body_prepend
10
+ a.tracking_command_location.should == :head_append
11
11
  end
12
12
  it 'should set the options' do
13
13
  a = Analytical::Google::Api.new @parent, {:key=>'abc'}
@@ -17,7 +17,8 @@ describe "Analytical::Google::Api" do
17
17
  describe '#track' do
18
18
  it 'should return the tracking javascript' do
19
19
  @api = Analytical::Google::Api.new @parent, {:key=>'abcdef'}
20
- @api.track('pagename', {:some=>'data'}).should == "googleAnalyticsTracker._trackPageview(\"pagename\");"
20
+ @api.track.should == "_gaq.push(['_trackPageview']);"
21
+ @api.track('pagename', {:some=>'data'}).should == "_gaq.push(['_trackPageview', \"pagename\"]);"
21
22
  end
22
23
  end
23
24
  describe '#identify' do
@@ -29,10 +30,11 @@ describe "Analytical::Google::Api" do
29
30
  describe '#init_javascript' do
30
31
  it 'should return the init javascript' do
31
32
  @api = Analytical::Google::Api.new @parent, {:key=>'abcdef'}
32
- @api.init_javascript(:head).should == ''
33
- @api.init_javascript(:body_prepend).should =~ /google-analytics.com\/ga.js/
34
- @api.init_javascript(:body_prepend).should =~ /abcdef/
33
+ @api.init_javascript(:head_prepend).should == ''
34
+ @api.init_javascript(:head_append).should =~ /abcdef/
35
+ @api.init_javascript(:head_append).should =~ /google-analytics.com\/ga.js/
36
+ @api.init_javascript(:body_prepend).should == ''
35
37
  @api.init_javascript(:body_append).should == ''
36
38
  end
37
39
  end
38
- end
40
+ end
@@ -2,47 +2,48 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "Analytical::KissMetrics::Api" do
4
4
  before(:each) do
5
- @parent = mock('api', :options=>{:google=>{:key=>'abc'}})
5
+ @parent = mock('api', :options=>{:google=>{:js_url_key=>'abc'}})
6
6
  end
7
7
  describe 'on initialize' do
8
8
  it 'should set the command_location' do
9
- a = Analytical::KissMetrics::Api.new @parent, {:key=>'abc'}
9
+ a = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abc'}
10
10
  a.tracking_command_location.should == :body_prepend
11
11
  end
12
12
  it 'should set the options' do
13
- a = Analytical::KissMetrics::Api.new @parent, {:key=>'abc'}
14
- a.options.should == {:key=>'abc'}
13
+ a = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abc'}
14
+ a.options.should == {:js_url_key=>'abc'}
15
15
  end
16
16
  end
17
17
  describe '#track' do
18
18
  it 'should return the tracking javascript' do
19
- @api = Analytical::KissMetrics::Api.new @parent, {:key=>'abcdef'}
19
+ @api = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abcdef'}
20
20
  @api.track('pagename', {:some=>'data'}).should == ''
21
21
  end
22
22
  end
23
23
  describe '#identify' do
24
24
  it 'should return a js string' do
25
- @api = Analytical::KissMetrics::Api.new @parent, {:key=>'abcdef'}
25
+ @api = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abcdef'}
26
26
  @api.identify('id', {:email=>'test@test.com'}).should == "_kmq.push([\"identify\", \"test@test.com\"]);"
27
27
  end
28
28
  end
29
29
  describe '#event' do
30
30
  it 'should return a js string' do
31
- @api = Analytical::KissMetrics::Api.new @parent, {:key=>'abcdef'}
31
+ @api = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abcdef'}
32
32
  @api.event('Big Deal', {:something=>'good'}).should == "_kmq.push([\"record\", \"Big Deal\", #{{:something=>'good'}.to_json}]);"
33
33
  end
34
34
  end
35
35
  describe '#set' do
36
36
  it 'should return a js string' do
37
- @api = Analytical::KissMetrics::Api.new @parent, {:key=>'abcdef'}
37
+ @api = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abcdef'}
38
38
  @api.set({:something=>'good', :b=>2}).should == "_kmq.push([\"set\", #{{:something=>'good', :b=>2}.to_json}]);"
39
39
  end
40
40
  end
41
41
  describe '#init_javascript' do
42
42
  it 'should return the init javascript' do
43
- @api = Analytical::KissMetrics::Api.new @parent, {:key=>'abcdef'}
44
- @api.init_javascript(:head).should == ''
45
- @api.init_javascript(:body_prepend).should =~ /scripts.kissmetrics.com/
43
+ @api = Analytical::KissMetrics::Api.new @parent, {:js_url_key=>'abcdef'}
44
+ @api.init_javascript(:head_prepend).should == ''
45
+ @api.init_javascript(:head_append).should == ''
46
+ @api.init_javascript(:body_prepend).should =~ /i\.kissmetrics\.com/
46
47
  @api.init_javascript(:body_prepend).should =~ /abcdef/
47
48
  @api.init_javascript(:body_append).should == ''
48
49
  end
@@ -0,0 +1,40 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Analytical::Optimizely::Api" do
4
+ before(:each) do
5
+ @parent = mock('api', :options=>{:optimizely=>{:key=>'abc'}})
6
+ end
7
+ describe 'on initialize' do
8
+ it 'should set the command_location' do
9
+ a = Analytical::Optimizely::Api.new @parent, {:key=>'abc'}
10
+ a.tracking_command_location.should == :head_prepend
11
+ end
12
+ it 'should set the options' do
13
+ a = Analytical::Optimizely::Api.new @parent, {:key=>'abc'}
14
+ a.options.should == {:key=>'abc'}
15
+ end
16
+ end
17
+ describe '#track' do
18
+ it 'should return the tracking javascript' do
19
+ @api = Analytical::Optimizely::Api.new @parent, {:key=>'abcdef'}
20
+ @api.track('pagename', {:some=>'data'}).should == ''
21
+ end
22
+ end
23
+
24
+ describe '#identify' do
25
+ it 'should return an empty string' do
26
+ @api = Analytical::Optimizely::Api.new @parent, {:key=>'abcdef'}
27
+ @api.identify('nothing', {:matters=>'at all'}).should == ''
28
+ end
29
+ end
30
+
31
+ describe '#init_javascript' do
32
+ it 'should return the init javascript' do
33
+ @api = Analytical::Optimizely::Api.new @parent, {:key=>'abcdef'}
34
+ @api.init_javascript(:head_prepend).should =~ /cdn\.optimizely.com\/js\/abcdef\.js/
35
+ @api.init_javascript(:head_append).should == ''
36
+ @api.init_javascript(:body_prepend).should == ''
37
+ @api.init_javascript(:body_append).should == ''
38
+ end
39
+ end
40
+ end
@@ -49,7 +49,8 @@ describe "Analytical" do
49
49
  DummyForInit.analytical
50
50
  DummyForInit.analytical_options[:google].should == {:key=>'google_12345'}
51
51
  DummyForInit.analytical_options[:kiss_metrics].should == {:key=>'kiss_metrics_12345'}
52
- DummyForInit.analytical_options[:clicky].should == {:key=>'clicky_12345'}
52
+ DummyForInit.analytical_options[:clicky].should == {:key=>'clicky_12345'}
53
+ DummyForInit.analytical_options[:chartbeat].should == {:key=>'chartbeat_12345', :domain => 'your.domain.com'}
53
54
  end
54
55
 
55
56
  describe 'in production mode' do
@@ -4,3 +4,6 @@ clicky:
4
4
  key: clicky_12345
5
5
  kiss_metrics:
6
6
  key: kiss_metrics_12345
7
+ chartbeat:
8
+ key: chartbeat_12345
9
+ domain: your.domain.com
metadata CHANGED
@@ -1,21 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analytical
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 1.3.0
10
+ version: 1.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joshua Krall
14
+ - Nathan Phelps
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2010-07-23 00:00:00 -05:00
19
+ date: 2010-08-22 00:00:00 -05:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
@@ -120,19 +121,25 @@ files:
120
121
  - lib/analytical/api.rb
121
122
  - lib/analytical/base.rb
122
123
  - lib/analytical/bot_detector.rb
124
+ - lib/analytical/chartbeat.rb
123
125
  - lib/analytical/clicky.rb
126
+ - lib/analytical/comscore.rb
124
127
  - lib/analytical/console.rb
125
128
  - lib/analytical/crazy_egg.rb
126
129
  - lib/analytical/google.rb
127
130
  - lib/analytical/hubspot.rb
128
131
  - lib/analytical/kiss_metrics.rb
132
+ - lib/analytical/optimizely.rb
129
133
  - rails/init.rb
130
134
  - spec/analytical/api_spec.rb
131
135
  - spec/analytical/base_spec.rb
132
136
  - spec/analytical/bot_detector_spec.rb
137
+ - spec/analytical/chartbeat_spec.rb
133
138
  - spec/analytical/clicky_spec.rb
139
+ - spec/analytical/comscore_spec.rb
134
140
  - spec/analytical/google_spec.rb
135
141
  - spec/analytical/kiss_metrics_spec.rb
142
+ - spec/analytical/optimizely_spec.rb
136
143
  - spec/analytical_spec.rb
137
144
  - spec/config/analytical.yml
138
145
  - spec/spec.opts
@@ -175,8 +182,11 @@ test_files:
175
182
  - spec/analytical/api_spec.rb
176
183
  - spec/analytical/base_spec.rb
177
184
  - spec/analytical/bot_detector_spec.rb
185
+ - spec/analytical/chartbeat_spec.rb
178
186
  - spec/analytical/clicky_spec.rb
187
+ - spec/analytical/comscore_spec.rb
179
188
  - spec/analytical/google_spec.rb
180
189
  - spec/analytical/kiss_metrics_spec.rb
190
+ - spec/analytical/optimizely_spec.rb
181
191
  - spec/analytical_spec.rb
182
192
  - spec/spec_helper.rb