vero 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vero (0.2.1)
4
+ vero (0.3.0)
5
5
  delayed_job
6
6
  delayed_job_active_record
7
7
  delayed_job_mongoid
@@ -38,6 +38,7 @@ GEM
38
38
  i18n (~> 0.6)
39
39
  multi_json (~> 1.0)
40
40
  arel (3.0.2)
41
+ bson (1.6.4)
41
42
  builder (3.0.0)
42
43
  columnize (0.3.6)
43
44
  debugger (1.1.3)
@@ -52,8 +53,9 @@ GEM
52
53
  delayed_job_active_record (0.3.2)
53
54
  activerecord (> 2.1.0)
54
55
  delayed_job (~> 3.0.0)
55
- delayed_job_mongoid (1.0.8)
56
- delayed_job (~> 3.0.0)
56
+ delayed_job_mongoid (1.1.0)
57
+ delayed_job (~> 3.0)
58
+ mongo (~> 1.6)
57
59
  mongoid (>= 2.0)
58
60
  diff-lcs (1.1.3)
59
61
  erubis (2.7.0)
@@ -66,9 +68,11 @@ GEM
66
68
  mime-types (~> 1.16)
67
69
  treetop (~> 1.4.8)
68
70
  mime-types (1.18)
69
- mongoid (3.0.1)
71
+ mongo (1.6.4)
72
+ bson (~> 1.6.4)
73
+ mongoid (3.0.2)
70
74
  activemodel (~> 3.1)
71
- moped (~> 1.1.1)
75
+ moped (~> 1.1.3)
72
76
  origin (~> 1.0.3)
73
77
  tzinfo (~> 0.3.22)
74
78
  moped (1.1.5)
data/info CHANGED
@@ -38,3 +38,13 @@ Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=",
38
38
  Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
39
39
  Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
40
40
  User: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
41
+ RestClient.post "http://localhost/api/v1/track.json", "auth_token=YWJjZDEyMzQ6ZWZnaDU2Nzg%3D&development_mode=true&event_name=test_event&identity[email]=durkster%40gmail.com&identity[age]=20&data[test]=1", "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"148", "Content-Type"=>"application/x-www-form-urlencoded"
42
+
43
+ RestClient.post "http://localhost/api/v1/track.json", "auth_token=YWJjZDEyMzQ6ZWZnaDU2Nzg%3D&development_mode=true&event_name=test_event&identity[email]=durkster%40gmail.com&identity[age]=20&data[test]=1", "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"148", "Content-Type"=>"application/x-www-form-urlencoded"
44
+
45
+ RestClient.post "http://localhost/api/v1/track.json", "auth_token=YWJjZDEyMzQ6ZWZnaDU2Nzg%3D&development_mode=true&event_name=test_event&identity[email]=durkster%40gmail.com&identity[age]=20&data[test]=1", "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"148", "Content-Type"=>"application/x-www-form-urlencoded"
46
+
47
+ RestClient.post "http://localhost/api/v1/track.json", "auth_token=YWJjZDEyMzQ6ZWZnaDU2Nzg%3D&development_mode=true&event_name=test_event&identity[email]=durkster%40gmail.com&identity[age]=20&data[test]=1", "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"148", "Content-Type"=>"application/x-www-form-urlencoded"
48
+
49
+ RestClient.post "http://localhost/api/v1/track.json", "auth_token=YWJjZDEyMzQ6ZWZnaDU2Nzg%3D&development_mode=true&event_name=test_event&identity[email]=durkster%40gmail.com&identity[age]=20&data[test]=1", "Accept"=>"*/*; q=0.5, application/xml", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"148", "Content-Type"=>"application/x-www-form-urlencoded"
50
+
data/lib/vero/app.rb CHANGED
@@ -1,51 +1,25 @@
1
1
  module Vero
2
2
  class App
3
- @@config = nil
3
+ include Vero::Logger
4
4
 
5
- def self.init(&block)
6
- @@config = Config.new
5
+ def self.default_context
6
+ @@default_context ||= Context.new
7
+ end
7
8
 
8
- if block_given?
9
- block.call(self.config)
10
- end
9
+ def self.init(&block)
10
+ default_context.configure(&block) if block_given?
11
11
  end
12
12
 
13
13
  def self.reset!
14
- @@config = nil
14
+ default_context.reset!
15
15
  end
16
16
 
17
17
  def self.disable_requests!
18
- @@config.disabled = true
19
- end
20
-
21
- def self.config
22
- @@config
18
+ default_context.disable_requests!
23
19
  end
24
20
 
25
21
  def self.configured?
26
- self.config && self.config.configured
27
- end
28
-
29
- def self.log(object, message)
30
- return unless config.logging
31
-
32
- logger = self.logger
33
- message = "#{object.class.name}: #{message}"
34
-
35
- if logger
36
- logger.info message
37
- else
38
- puts message
39
- end
40
- end
41
-
42
- def self.logger
43
- return nil unless config.logging
44
- if defined?(Rails) && Rails.logger
45
- Rails.logger
46
- else
47
- nil
48
- end
22
+ default_context.configured?
49
23
  end
50
24
  end
51
25
  end
data/lib/vero/config.rb CHANGED
@@ -3,11 +3,12 @@ module Vero
3
3
  attr_writer :domain
4
4
  attr_accessor :api_key, :secret, :development_mode, :async, :disabled, :logging
5
5
 
6
+ def self.available_attributes
7
+ [:api_key, :secret, :development_mode, :async, :disabled, :logging, :domain]
8
+ end
9
+
6
10
  def initialize
7
- self.disabled = false
8
- self.development_mode = !Rails.env.production?
9
- self.async = true
10
- self.logging = false
11
+ self.reset!
11
12
  end
12
13
 
13
14
  def config_params
@@ -32,8 +33,26 @@ module Vero
32
33
  Base64::encode64("#{api_key}:#{secret}").gsub(/[\n ]/, '')
33
34
  end
34
35
 
35
- def configured
36
+ def configured?
36
37
  !api_key.blank? && !secret.blank?
37
38
  end
39
+
40
+ def reset!
41
+ self.disabled = false
42
+ self.development_mode = !Rails.env.production?
43
+ self.async = true
44
+ self.logging = false
45
+ self.api_key = nil
46
+ self.secret = nil
47
+ end
48
+
49
+ def update_attributes(attributes = {})
50
+ return unless attributes.is_a?(Hash)
51
+
52
+ Vero::Config.available_attributes.each do |symbol|
53
+ method_name = "#{symbol.to_s}=".to_sym
54
+ self.send(method_name, attributes[symbol]) if self.respond_to?(method_name) && attributes.has_key?(symbol)
55
+ end
56
+ end
38
57
  end
39
58
  end
@@ -0,0 +1,104 @@
1
+ require 'json'
2
+ require 'delayed_job'
3
+ require 'vero/jobs/rest_post_job'
4
+
5
+ module Vero
6
+ class Context
7
+ attr_accessor :config, :subject
8
+
9
+ def initialize(object = {})
10
+ case object
11
+ when Hash
12
+ #stub
13
+ when Vero::Context
14
+ @config = object.config
15
+ @subject = object.subject
16
+ else
17
+ object = Vero::Config.available_attributes.inject({}) do |hash, symbol|
18
+ hash[symbol] = object.respond_to?(symbol) ? object.send(symbol) : nil
19
+ hash
20
+ end
21
+ end
22
+
23
+ if object.is_a?(Hash)
24
+ @config = Vero::Config.new
25
+ self.configure(object)
26
+ end
27
+ end
28
+
29
+ def configure(hash = {}, &block)
30
+ if hash.is_a?(Hash) && hash.any?
31
+ @config.update_attributes(hash)
32
+ end
33
+
34
+ block.call(@config) if block_given?
35
+ end
36
+
37
+ def reset!
38
+ @config.reset!
39
+ end
40
+
41
+ def disable_requests!
42
+ @config.disabled = true
43
+ end
44
+
45
+ def configured?
46
+ @config.configured?
47
+ end
48
+
49
+ def track(event_name, event_data = {})
50
+ validate_configured!
51
+ validate_track_params!(event_name, event_data)
52
+
53
+ request_params = @config.request_params
54
+ request_params.merge!({:event_name => event_name, :identity => subject.to_vero, :data => event_data})
55
+
56
+ method = if @config.async
57
+ :post_later
58
+ else
59
+ :post_now
60
+ end
61
+ self.send(method, "http://#{@config.domain}/api/v1/track.json", request_params)
62
+ end
63
+
64
+ private
65
+ def post_now(url, params)
66
+ unless @config.disabled
67
+ Vero::Jobs::RestPostJob.new(url, params).perform
68
+ Vero::App.log(self, "method: track, params: #{params.to_json}, response: job performed")
69
+ end
70
+ 'success'
71
+ rescue => e
72
+ Vero::App.log(self, "method: track, params: #{params.to_json} error: #{e.message}")
73
+ end
74
+
75
+ def post_later(url, params)
76
+ unless @config.disabled
77
+ ::Delayed::Job.enqueue Vero::Jobs::RestPostJob.new(url, params)
78
+ Vero::App.log(self, "method: track, params: #{params.to_json}, response: delayed job queued")
79
+ end
80
+ 'success'
81
+ rescue => e
82
+ if e.message == "Could not find table 'delayed_jobs'"
83
+ raise "To send ratings asynchronously, you must configure delayed_job. Run `rails generate delayed_job:active_record` then `rake db:migrate`."
84
+ else
85
+ raise e
86
+ end
87
+ end
88
+
89
+ def validate_configured!
90
+ unless @config.configured?
91
+ raise "You must configure the 'vero' gem. Visit https://github.com/semblancesystems/vero for more details."
92
+ end
93
+ end
94
+
95
+ def validate_track_params!(event_name, event_data)
96
+ result = true
97
+
98
+ result &&= event_name.kind_of?(String) && !event_name.blank?
99
+ result &&= event_data.nil? || event_data.kind_of?(Hash)
100
+
101
+ raise ArgumentError.new({:event_name => event_name, :event_data => event_data}) unless result
102
+ end
103
+ end
104
+ end
@@ -11,6 +11,7 @@ module Vero
11
11
  private
12
12
  def setup_logging
13
13
  return unless Vero::App.logger
14
+
14
15
  RestClient.log = Object.new.tap do |proxy|
15
16
  def proxy.<<(message)
16
17
  Vero::App.logger.info message
@@ -0,0 +1,25 @@
1
+ module Vero
2
+ module Logger
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def log(object, message)
9
+ return unless Vero::App.default_context.config.logging
10
+
11
+ message = "#{object.class.name}: #{message}"
12
+
13
+ if (logger = self.logger)
14
+ logger.info(message)
15
+ else
16
+ puts(message)
17
+ end
18
+ end
19
+
20
+ def logger
21
+ defined?(Rails) && Rails.logger ? Rails.logger : nil
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,3 @@
1
- require 'delayed_job'
2
- require 'json'
3
- require 'vero/jobs/rest_post_job'
4
-
5
1
  module Vero
6
2
  module Trackable
7
3
  def self.included(base)
@@ -11,10 +7,10 @@ module Vero
11
7
 
12
8
  module ClassMethods
13
9
  def trackable(*args)
14
- if @vero_trackable_map.kind_of?(Array)
15
- @vero_trackable_map = (@vero_trackable_map << args).flatten
10
+ @vero_trackable_map = case @vero_trackable_map
11
+ when Array then (@vero_trackable_map << args).flatten
16
12
  else
17
- @vero_trackable_map = args
13
+ args
18
14
  end
19
15
  end
20
16
 
@@ -22,13 +18,14 @@ module Vero
22
18
  @vero_trackable_map
23
19
  end
24
20
 
25
- def trackable_map_reset!
21
+ def reset_trackable_map!
26
22
  @vero_trackable_map = nil
27
23
  end
28
24
  end
29
25
 
30
26
  def to_vero
31
- result = self.class.trackable_map.inject({}) do |hash, symbol|
27
+ klass = self.class
28
+ result = klass.trackable_map.inject({}) do |hash, symbol|
32
29
  hash[symbol] = self.send(symbol)
33
30
  hash
34
31
  end
@@ -37,66 +34,14 @@ module Vero
37
34
  result
38
35
  end
39
36
 
40
- def track(event_name, event_data = {}, cta = '')
41
- validate_configured!
42
- validate_track_params!(event_name, event_data)
43
-
44
- config = Vero::App.config
45
- request_params = config.request_params
46
- request_params.merge!({:event_name => event_name, :identity => self.to_vero, :data => event_data})
47
-
48
- method = !config.async ? :post_now : :post_later
49
- self.send(method, "http://#{config.domain}/api/v1/track.json", request_params)
50
- end
51
-
52
- private
53
- def post_now(url, params)
54
- begin
55
- execute_unless_disabled do
56
- Vero::Jobs::RestPostJob.new(url, params).perform
57
- Vero::App.log(self, "method: track, params: #{params.to_json}, response: job performed")
58
- end
59
- rescue => e
60
- Vero::App.log(self, "method: track, params: #{params.to_json} error: #{e.message}")
61
- end
62
- end
63
-
64
- def post_later(url, params)
65
- begin
66
- execute_unless_disabled do
67
- ::Delayed::Job.enqueue Vero::Jobs::RestPostJob.new(url, params)
68
- Vero::App.log(self, "method: track, params: #{params.to_json}, response: delayed job queued")
69
- end
70
- rescue ActiveRecord::StatementInvalid => e
71
- if e.message == "Could not find table 'delayed_jobs'"
72
- raise "To send ratings asynchronously, you must configure delayed_job. Run `rails generate delayed_job:active_record` then `rake db:migrate`."
73
- else
74
- raise e
75
- end
76
- end
77
- 'success'
78
- end
79
-
80
- def validate_configured!
81
- unless Vero::App.configured?
82
- raise "You must configure the 'vero' gem. Visit https://github.com/semblancesystems/vero for more details."
83
- end
84
- end
85
-
86
- def validate_track_params!(event_name, event_data)
87
- result = true
88
-
89
- result &&= event_name.kind_of?(String) && !event_name.blank?
90
- result &&= event_data.nil? || event_data.kind_of?(Hash)
91
-
92
- raise ArgumentError.new({:event_name => event_name, :event_data => event_data}) unless result
37
+ def with_vero_context(context = {})
38
+ context = Vero::Context.new(context)
39
+ context.subject = self
40
+ context
93
41
  end
94
42
 
95
- def execute_unless_disabled(&block)
96
- config = Vero::App.config
97
- if !config.disabled && block_given?
98
- block.call
99
- end
43
+ def track(event_name, event_data = {})
44
+ self.with_vero_context(Vero::App.default_context).track(event_name, event_data)
100
45
  end
101
46
  end
102
47
  end
data/lib/vero/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vero
2
- VERSION = '0.2.1'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -1,14 +1,15 @@
1
1
  module Vero
2
2
  module ViewHelpers
3
- def vero_javascript_tag(method = :default)
4
- return "" unless Vero::App.configured?
3
+ def vero_javascript_tag(method = :default, context = Vero::App.default_context)
4
+ return "" unless context.configured?
5
+ config = context.config
5
6
 
6
7
  unless [:default, :mixpanel, :kissmetrics].include?(method)
7
8
  method = :default
8
9
  end
9
10
 
10
11
  method_name = method.to_s + "_vero_javascript_tag"
11
- self.send(method_name.to_sym, Vero::App.config.config_params)
12
+ self.send(method_name.to_sym, config.config_params)
12
13
  end
13
14
 
14
15
  private
data/lib/vero.rb CHANGED
@@ -2,7 +2,9 @@ require 'rails'
2
2
 
3
3
  module Vero
4
4
  autoload :Config, 'vero/config'
5
+ autoload :Logger, 'vero/logger'
5
6
  autoload :App, 'vero/app'
7
+ autoload :Context, 'vero/context'
6
8
  autoload :Trackable, 'vero/trackable'
7
9
  end
8
10
 
data/spec/lib/app_spec.rb CHANGED
@@ -1,51 +1,58 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Vero::App do
4
- describe :init do
5
- it "should create a Config object" do
6
- Vero::App.config.should be_nil
7
- Vero::App.init {}
8
- Vero::App.config.should_not be_nil
4
+ describe 'self.default_context' do
5
+ it "inherits from Vero::Context" do
6
+ actual = Vero::App.default_context
7
+ actual.should be_a(Vero::Context)
9
8
  end
9
+ end
10
10
 
11
+ let (:context) { Vero::App.default_context }
12
+ describe :init do
11
13
  it "should ignore configuring the config if no block is provided" do
12
14
  Vero::App.init
13
- Vero::App.configured?.should be_false
15
+ context.configured?.should be_false
14
16
  end
15
17
 
16
18
  it "should pass configuration defined in the block to the config file" do
17
19
  Vero::App.init
18
20
 
19
- Vero::App.config.api_key.should be_nil
21
+ context.config.api_key.should be_nil
20
22
  Vero::App.init do |c|
21
23
  c.api_key = "abcd1234"
22
24
  end
23
- Vero::App.config.api_key.should == "abcd1234"
25
+ context.config.api_key.should == "abcd1234"
24
26
  end
25
27
 
26
28
  it "should init should be able to set async" do
27
29
  Vero::App.init do |c|
28
30
  c.async = false
29
31
  end
30
- Vero::App.config.async.should be_false
32
+ context.config.async.should be_false
31
33
 
32
34
  Vero::App.init do |c|
33
35
  c.async = true
34
36
  end
35
- Vero::App.config.async.should be_true
37
+ context.config.async.should be_true
36
38
  end
37
39
  end
38
40
 
39
41
  describe :disable_requests! do
40
- before :each do
41
- Vero::App.init {}
42
- end
43
-
44
42
  it "should change config.disabled" do
45
- Vero::App.config.disabled.should be_false
43
+ Vero::App.init {}
44
+ context.config.disabled.should be_false
46
45
 
47
46
  Vero::App.disable_requests!
48
- Vero::App.config.disabled.should be_true
47
+ context.config.disabled.should be_true
48
+ end
49
+ end
50
+
51
+ describe :log do
52
+ it "should have a log method" do
53
+ Vero::App.init {}
54
+ Vero::App.should_receive(:log)
55
+ Vero::App.log(Object, "test")
49
56
  end
50
57
  end
51
58
  end
@@ -9,6 +9,17 @@ describe Vero::Config do
9
9
  @config.async.should be_true
10
10
  end
11
11
 
12
+ describe :reset! do
13
+ it "should reset all attributes" do
14
+ @config.api_key = "abcd1234"
15
+ @config.secret = "abcd1234"
16
+
17
+ @config.reset!
18
+ @config.api_key.should be_nil
19
+ @config.secret.should be_nil
20
+ end
21
+ end
22
+
12
23
  describe :auth_token do
13
24
  it "should return nil if either api_key or secret are not set" do
14
25
  @config.api_key = nil
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe Vero::Context do
4
+ let(:context) { Vero::Context.new }
5
+
6
+ it "accepts multiple parameter types in contructor" do
7
+ context1 = Vero::Context.new({ :api_key => 'blah', :secret => 'didah' })
8
+ context1.should be_a(Vero::Context)
9
+ context1.config.api_key.should == 'blah'
10
+ context1.config.secret.should == 'didah'
11
+
12
+ context2 = Vero::Context.new(context1)
13
+ context2.should be_a(Vero::Context)
14
+ context2.should_not be(context1)
15
+ context2.config.api_key.should == 'blah'
16
+ context2.config.secret.should == 'didah'
17
+
18
+ context3 = Vero::Context.new VeroUser.new('api_key', 'secret')
19
+ context3.should be_a(Vero::Context)
20
+ context3.config.api_key.should == 'api_key'
21
+ context3.config.secret.should == 'secret'
22
+ end
23
+
24
+ describe :configure do
25
+ it "should ignore configuring the config if no block is provided" do
26
+ context.configure
27
+ context.configured?.should be_false
28
+ end
29
+
30
+ it "should pass configuration defined in the block to the config file" do
31
+ context.configure do |c|
32
+ c.api_key = "abcd1234"
33
+ end
34
+ context.config.api_key.should == "abcd1234"
35
+ end
36
+
37
+ it "should init should be able to set async" do
38
+ context.configure do |c|
39
+ c.async = false
40
+ end
41
+ context.config.async.should be_false
42
+
43
+ context.configure do |c|
44
+ c.async = true
45
+ end
46
+ context.config.async.should be_true
47
+ end
48
+ end
49
+
50
+ describe :disable_requests! do
51
+ it "should change config.disabled" do
52
+ context.config.disabled.should be_false
53
+ context.disable_requests!
54
+ context.config.disabled.should be_true
55
+ end
56
+ end
57
+ end
@@ -21,7 +21,7 @@ describe Vero::Trackable do
21
21
  describe :track do
22
22
  it "should raise an error" do
23
23
  @user.stub(:post_later).and_return('success')
24
- expect { @user.track(@request_params[:event_name], @request_params[:data], 'test') }.to raise_error
24
+ expect { @user.track(@request_params[:event_name], @request_params[:data]) }.to raise_error
25
25
  end
26
26
  end
27
27
  end
@@ -45,44 +45,56 @@ describe Vero::Trackable do
45
45
  end
46
46
 
47
47
  it "should send a track request when async is set to false" do
48
- @user.stub(:post_now).and_return(200)
49
- @user.should_receive(:post_now).with(@url, @request_params).at_least(:once)
50
- @user.track(@request_params[:event_name], @request_params[:data], 'test').should == 200
48
+ context = Vero::Context.new(Vero::App.default_context)
49
+ context.subject = @user
50
+ context.stub(:post_now).and_return(200)
51
+ context.should_receive(:post_now).with(@url, @request_params).at_least(:once)
52
+
53
+ @user.stub(:with_vero_context).and_return(context)
54
+
55
+ @user.track(@request_params[:event_name], @request_params[:data]).should == 200
51
56
  @user.track(@request_params[:event_name]).should == 200
52
57
  end
53
58
 
54
59
  it "should create a delayed job when async is set to true" do
55
- @user.stub(:post_later).and_return('success')
56
- @user.should_receive(:post_later).with(@url, @request_params).at_least(:once)
57
-
58
- Vero::App.config.async = true
59
- @user.track(@request_params[:event_name], @request_params[:data], 'test').should == 'success'
60
+ context = Vero::Context.new(Vero::App.default_context)
61
+ context.subject = @user
62
+ context.config.async = true
63
+
64
+ context.stub(:post_later).and_return('success')
65
+ context.should_receive(:post_later).with(@url, @request_params).at_least(:once)
66
+
67
+ @user.stub(:with_vero_context).and_return(context)
68
+
69
+ @user.track(@request_params[:event_name], @request_params[:data]).should == 'success'
60
70
  @user.track(@request_params[:event_name]).should == 'success'
61
71
  end
62
72
 
63
73
  it "should not raise an error when async is set to false and the request times out" do
64
- Vero::App.config.async = false
65
- Vero::App.config.domain = "localhost"
66
74
  Rails.stub(:logger).and_return(Logger.new('info'))
75
+
76
+ context = Vero::App.default_context
77
+ context.config.async = false
78
+ context.config.domain = "localhost"
67
79
 
68
- expect { @user.track(@request_params[:event_name], @request_params[:data], 'test') }.to_not raise_error
80
+ expect { @user.track(@request_params[:event_name], @request_params[:data]) }.to_not raise_error
69
81
  end
70
82
  end
71
83
 
72
84
  describe :trackable do
73
85
  after :each do
74
- User.trackable_map_reset!
86
+ User.reset_trackable_map!
75
87
  User.trackable :email, :age
76
88
  end
77
89
 
78
90
  it "should build an array of trackable params" do
79
- User.trackable_map_reset!
91
+ User.reset_trackable_map!
80
92
  User.trackable :email, :age
81
93
  User.trackable_map.should == [:email, :age]
82
94
  end
83
95
 
84
96
  it "should append new trackable items to an existing trackable map" do
85
- User.trackable_map_reset!
97
+ User.reset_trackable_map!
86
98
  User.trackable :email, :age
87
99
  User.trackable :hair_colour
88
100
  User.trackable_map.should == [:email, :age, :hair_colour]
@@ -103,24 +115,5 @@ describe Vero::Trackable do
103
115
  user.to_vero.should == temp_params
104
116
  end
105
117
  end
106
-
107
- describe :execute_unless_disabled do
108
- it "should only execute the block unless config.disabled" do
109
- user = User.new
110
- test_val = 1
111
- test_val.should == 1
112
-
113
- user.send(:execute_unless_disabled) do
114
- test_val = 2
115
- end
116
- test_val.should == 2
117
-
118
- Vero::App.disable_requests!
119
- user.send(:execute_unless_disabled) do
120
- test_val = 3
121
- end
122
- test_val.should == 2
123
- end
124
- end
125
118
  end
126
119
  end
@@ -0,0 +1,2 @@
1
+ class VeroUser < Struct.new(:api_key, :secret)
2
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vero
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -87,7 +87,9 @@ files:
87
87
  - lib/generators/vero_generator.rb
88
88
  - lib/vero/app.rb
89
89
  - lib/vero/config.rb
90
+ - lib/vero/context.rb
90
91
  - lib/vero/jobs/rest_post_job.rb
92
+ - lib/vero/logger.rb
91
93
  - lib/vero/railtie.rb
92
94
  - lib/vero/trackable.rb
93
95
  - lib/vero/version.rb
@@ -96,10 +98,12 @@ files:
96
98
  - README.markdown
97
99
  - spec/lib/app_spec.rb
98
100
  - spec/lib/config_spec.rb
101
+ - spec/lib/context_spec.rb
99
102
  - spec/lib/trackable_spec.rb
100
103
  - spec/lib/view_helpers_spec.rb
101
104
  - spec/spec_helper.rb
102
105
  - spec/support/user_support.rb
106
+ - spec/support/vero_user_support.rb
103
107
  - vero.gemspec
104
108
  homepage: http://getvero.com/
105
109
  licenses: []
@@ -128,7 +132,9 @@ summary: Rails 3.x gem for Vero
128
132
  test_files:
129
133
  - spec/lib/app_spec.rb
130
134
  - spec/lib/config_spec.rb
135
+ - spec/lib/context_spec.rb
131
136
  - spec/lib/trackable_spec.rb
132
137
  - spec/lib/view_helpers_spec.rb
133
138
  - spec/spec_helper.rb
134
139
  - spec/support/user_support.rb
140
+ - spec/support/vero_user_support.rb