Skip to content

Commit

Permalink
Merge pull request #16 from railslove/store_events_as_hashes
Browse files Browse the repository at this point in the history
store events as hashes in the session
  • Loading branch information
jhilden committed Jan 26, 2015
2 parents ff1bd34 + ef626f9 commit f2b03cb
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 20 deletions.
2 changes: 1 addition & 1 deletion lib/rack/tracker/facebook/facebook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def render
end

def self.track(name, *event)
{ name.to_s => [Event.new(event.last)] }
{ name.to_s => [event.last.merge(class_name: 'Event')] }
end

end
2 changes: 1 addition & 1 deletion lib/rack/tracker/go_squared/go_squared.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ def visitor_info
end

def self.track(name, *event)
{ name.to_s => [const_get(event.first.to_s.classify).new(event.last)] }
{ name.to_s => [event.last.merge(class_name: event.first.to_s.classify)] }
end
end
2 changes: 1 addition & 1 deletion lib/rack/tracker/google_analytics/google_analytics.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ def ecommerce_events
end

def self.track(name, *event)
{ name.to_s => [const_get(event.first.to_s.capitalize).new(event.last)] }
{ name.to_s => [event.last.merge(class_name: event.first.to_s.capitalize)] }
end
end
3 changes: 2 additions & 1 deletion lib/rack/tracker/handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ def initialize(env, options = {})
end

def events
env.fetch('tracker', {})[self.class.to_s.demodulize.underscore] || []
events = env.fetch('tracker', {})[self.class.to_s.demodulize.underscore] || []
events.map{ |ev| "#{self.class}::#{ev[:class_name]}".constantize.new(ev.except(:class_name)) }
end

def render
Expand Down
11 changes: 6 additions & 5 deletions spec/handler/facebook_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,12 @@ def env
'tracker' => {
'facebook' =>
[
Rack::Tracker::Facebook::Event.new(
'id'=> '123456789',
'value' => '23',
'currency' => 'EUR'
)
{
id: '123456789',
value: '23',
currency: 'EUR',
class_name: 'Event'
}
]
}
}
Expand Down
4 changes: 2 additions & 2 deletions spec/handler/go_squared_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def env
def env
{'tracker' => {
'go_squared' => [
Rack::Tracker::GoSquared::VisitorName.new(name: "John Doe")
{ class_name: 'VisitorName', name: 'John Doe' }
]
}}
end
Expand All @@ -30,7 +30,7 @@ def env
def env
{'tracker' => {
'go_squared' => [
Rack::Tracker::GoSquared::VisitorInfo.new(age: 35, favorite_food: 'pizza')
{ class_name: 'VisitorInfo', age: 35, favorite_food: 'pizza' }
]
}}
end
Expand Down
8 changes: 4 additions & 4 deletions spec/handler/google_analytics_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def env
def env
{'tracker' => {
'google_analytics' => [
Rack::Tracker::GoogleAnalytics::Send.new(category: "Users", action: "Login", label: "Standard")
{ class_name: 'Send', category: "Users", action: "Login", label: "Standard" }
]
}}
end
Expand All @@ -49,7 +49,7 @@ def env
describe "with a event value" do
def env
{'tracker' => { 'google_analytics' => [
Rack::Tracker::GoogleAnalytics::Send.new(category: "Users", action: "Login", label: "Standard", value: "5")
{ class_name: 'Send', category: "Users", action: "Login", label: "Standard", value: "5" }
]}}
end

Expand All @@ -65,8 +65,8 @@ def env
def env
{'tracker' => {
'google_analytics' => [
Rack::Tracker::GoogleAnalytics::Ecommerce.new({type: 'addItem', id: '1234', name: 'Fluffy Pink Bunnies', sku: 'DD23444', category: 'Party Toys', price: '11.99', quantity: '1'}),
Rack::Tracker::GoogleAnalytics::Ecommerce.new({type: 'addTransaction', id: '1234', affiliation: 'Acme Clothing', revenue: 11.99, shipping: '5', tax: '1.29', currency: 'EUR'})
{ class_name: 'Ecommerce', type: 'addItem', id: '1234', name: 'Fluffy Pink Bunnies', sku: 'DD23444', category: 'Party Toys', price: '11.99', quantity: '1' },
{ class_name: 'Ecommerce', type: 'addTransaction', id: '1234', affiliation: 'Acme Clothing', revenue: 11.99, shipping: '5', tax: '1.29', currency: 'EUR' }
]
}}
end
Expand Down
1 change: 1 addition & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
require 'rack/test'
require 'capybara/rspec'
require 'rack/tracker'
require 'pry'

# Requires supporting files with custom matchers and macros, etc,
# in ./support/ and its subdirectories.
Expand Down
10 changes: 5 additions & 5 deletions spec/tracker/controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ def index

RSpec.describe Rack::Tracker::Controller do
describe '#tracker' do
let(:send) { Rack::Tracker::GoogleAnalytics::Send.new(category: 'foo') }
let(:trx) { Rack::Tracker::GoogleAnalytics::Ecommerce.new(type: 'addTransaction', some: 'thing') }
let(:item_foo) { Rack::Tracker::GoogleAnalytics::Ecommerce.new(type: 'addItem', name: 'foo') }
let(:item_bar) { Rack::Tracker::GoogleAnalytics::Ecommerce.new(type: 'addItem', name: 'bar') }
let(:fb_event) { Rack::Tracker::Facebook::Event.new(id: '1', value: 1, currency: 'USD') }
let(:send) { { class_name: 'Send', category: 'foo' } }
let(:trx) { { class_name: 'Ecommerce', type: 'addTransaction', some: 'thing' } }
let(:item_foo) { { class_name: 'Ecommerce', type: 'addItem', name: 'foo' } }
let(:item_bar) { { class_name: 'Ecommerce', type: 'addItem', name: 'bar' } }
let(:fb_event) { { class_name: 'Event', id: '1', value: 1, currency: 'USD' } }
let(:controller) { TestController.new({}) }

context 'controller' do
Expand Down

0 comments on commit f2b03cb

Please sign in to comment.