Skip to content
This repository was archived by the owner on Oct 12, 2023. It is now read-only.

Commit d643e6d

Browse files
committed
only work with stringified keys
Stringify all the incomming has keys from the track methods and only work with string keys internally. The reason is that hashes coming from the Rails session will always have string keys and this way it's consistent everwhere internally.
1 parent d3a7608 commit d643e6d

8 files changed

Lines changed: 19 additions & 19 deletions

File tree

lib/rack/tracker/facebook/facebook.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def render
1212
end
1313

1414
def self.track(name, *event)
15-
{ name.to_s => [event.last.merge(class_name: 'Event')] }
15+
{ name.to_s => [event.last.deep_stringify_keys.merge('class_name' => 'Event')] }
1616
end
1717

1818
end

lib/rack/tracker/go_squared/go_squared.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ def visitor_info
3232
end
3333

3434
def self.track(name, *event)
35-
{ name.to_s => [event.last.merge(class_name: event.first.to_s.classify)] }
35+
{ name.to_s => [event.last.deep_stringify_keys.merge('class_name' => event.first.to_s.classify)] }
3636
end
3737
end

lib/rack/tracker/google_analytics/google_analytics.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,6 @@ def ecommerce_events
5050
end
5151

5252
def self.track(name, *event)
53-
{ name.to_s => [event.last.merge(class_name: event.first.to_s.capitalize)] }
53+
{ name.to_s => [event.last.deep_stringify_keys.merge('class_name' => event.first.to_s.capitalize)] }
5454
end
5555
end

lib/rack/tracker/handler.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def initialize(env, options = {})
1313

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

1919
def render

spec/handler/facebook_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ def env
3737
'facebook' =>
3838
[
3939
{
40-
id: '123456789',
41-
value: '23',
42-
currency: 'EUR',
43-
class_name: 'Event'
40+
'id' => '123456789',
41+
'value' => '23',
42+
'currency' => 'EUR',
43+
'class_name' => 'Event'
4444
}
4545
]
4646
}

spec/handler/go_squared_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def env
1414
def env
1515
{'tracker' => {
1616
'go_squared' => [
17-
{ class_name: 'VisitorName', name: 'John Doe' }
17+
{ 'class_name' => 'VisitorName', 'name' => 'John Doe' }
1818
]
1919
}}
2020
end
@@ -30,7 +30,7 @@ def env
3030
def env
3131
{'tracker' => {
3232
'go_squared' => [
33-
{ class_name: 'VisitorInfo', age: 35, favorite_food: 'pizza' }
33+
{ 'class_name' => 'VisitorInfo', 'age' => 35, 'favorite_food' => 'pizza' }
3434
]
3535
}}
3636
end

spec/handler/google_analytics_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def env
7676
def env
7777
{'tracker' => {
7878
'google_analytics' => [
79-
{ class_name: 'Send', category: "Users", action: "Login", label: "Standard" }
79+
{ 'class_name' => 'Send', 'category' => 'Users', 'action' => 'Login', 'label' => 'Standard' }
8080
]
8181
}}
8282
end
@@ -90,7 +90,7 @@ def env
9090
describe "with a event value" do
9191
def env
9292
{'tracker' => { 'google_analytics' => [
93-
{ class_name: 'Send', category: "Users", action: "Login", label: "Standard", value: "5" }
93+
{ 'class_name' => 'Send', category: "Users", action: "Login", label: "Standard", value: "5" }
9494
]}}
9595
end
9696

@@ -106,8 +106,8 @@ def env
106106
def env
107107
{'tracker' => {
108108
'google_analytics' => [
109-
{ class_name: 'Ecommerce', type: 'addItem', id: '1234', name: 'Fluffy Pink Bunnies', sku: 'DD23444', category: 'Party Toys', price: '11.99', quantity: '1' },
110-
{ class_name: 'Ecommerce', type: 'addTransaction', id: '1234', affiliation: 'Acme Clothing', revenue: 11.99, shipping: '5', tax: '1.29', currency: 'EUR' }
109+
{ 'class_name' => 'Ecommerce', 'type' => 'addItem', 'id' => '1234', 'name' => 'Fluffy Pink Bunnies', 'sku' => 'DD23444', 'category' => 'Party Toys', 'price' => '11.99', 'quantity' => '1' },
110+
{ 'class_name' => 'Ecommerce', 'type' => 'addTransaction', 'id' => '1234', 'affiliation' => 'Acme Clothing', 'revenue' => 11.99, 'shipping' => '5', 'tax' => '1.29', 'currency' => 'EUR' }
111111
]
112112
}}
113113
end

spec/tracker/controller_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ def index
2222

2323
RSpec.describe Rack::Tracker::Controller do
2424
describe '#tracker' do
25-
let(:send) { { class_name: 'Send', category: 'foo' } }
26-
let(:trx) { { class_name: 'Ecommerce', type: 'addTransaction', some: 'thing' } }
27-
let(:item_foo) { { class_name: 'Ecommerce', type: 'addItem', name: 'foo' } }
28-
let(:item_bar) { { class_name: 'Ecommerce', type: 'addItem', name: 'bar' } }
29-
let(:fb_event) { { class_name: 'Event', id: '1', value: 1, currency: 'USD' } }
25+
let(:send) { { 'category' => 'foo', 'class_name' => 'Send' } }
26+
let(:trx) { { 'type' => 'addTransaction', 'some' => 'thing', 'class_name' => 'Ecommerce' } }
27+
let(:item_foo) { { 'type' => 'addItem', 'name' => 'foo', 'class_name' => 'Ecommerce' } }
28+
let(:item_bar) { { 'type' => 'addItem', 'name' => 'bar', 'class_name' => 'Ecommerce' } }
29+
let(:fb_event) { { 'id' => '1', 'value' => 1, 'currency' => 'USD', 'class_name' => 'Event' } }
3030
let(:controller) { TestController.new({}) }
3131

3232
context 'controller' do

0 commit comments

Comments
 (0)