gabba-gmp 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9f61c6e8d4d5f9bd7e8f6211c1200cfb75d5152
4
- data.tar.gz: a44c3224b4450e70cc85ff483c82154a9e1b14e4
3
+ metadata.gz: 00bdea145d8fff89dfdeae456a77fa9d63126ad5
4
+ data.tar.gz: 034188d7f5a36758720eee9b33f5e5ead77a137b
5
5
  SHA512:
6
- metadata.gz: 1eefcc83c887f569e369c1d1095269664487da3d77c7cfaad8f8422e8fb6f4ebb8f2ba56cbff2fbc1e6daceec5f7091d3bdc469883a8f31662931708702811ef
7
- data.tar.gz: 4aa0a0dba797a05932e817b9949e87cfb6c6451da7baf2a809a956ca849162008b6bdc0534f7ee4a90a38fec92442cf26695749ff57fcd858debd5b60bb6f696
6
+ metadata.gz: 7f0d2df6f233cb9a377d5d335fba9d93350740504d1e157bda3b0d78e7df18a9acd7145c1e1e854b043116cf039eb2a09d7725c0ff7c1ca6ec4192808a830037
7
+ data.tar.gz: fba6cfb6133dc3c7ea42669228a8b6a8dbe850c49de8464b92baade2b767f69864ae28c1b50e3a180a4ec82ba7b3297cfc067cfb818970666a36bf3644cd8ea0
@@ -27,8 +27,8 @@ module GabbaGMP
27
27
  event_category: category,
28
28
  event_action: action
29
29
  }
30
- options[:event_label] = label if label
31
- options[:event_value] = value if value
30
+ options[:event_label] = label unless label.to_s.empty?
31
+ options[:event_value] = value unless value.to_s.empty?
32
32
  @sessionopts.merge(options).merge!(event_options)
33
33
  end
34
34
  end
@@ -4,6 +4,7 @@ require 'net/http'
4
4
  require 'ipaddr'
5
5
  require 'cgi'
6
6
  require 'net/http/persistent'
7
+ require 'pry'
7
8
 
8
9
  require "#{File.dirname(__FILE__)}/parameter_map"
9
10
  require "#{File.dirname(__FILE__)}/campaign"
@@ -93,26 +94,30 @@ module GabbaGMP
93
94
  campaign ||= Campaign.new
94
95
  {}.tap do |campaign_params|
95
96
  if campaign.present?
96
- @sessionopts[:campaign_name] = campaign.name
97
+ @sessionopts[:campaign_name] = parse_string(campaign.name)
97
98
  @sessionopts[:campaign_name] ||= "(direct)"
98
99
 
99
- @sessionopts[:campaign_source] = campaign.source
100
+ @sessionopts[:campaign_source] = parse_string(campaign.source)
100
101
  @sessionopts[:campaign_source] ||= "(direct)"
101
102
 
102
- @sessionopts[:campaign_medium] = campaign.medium
103
+ @sessionopts[:campaign_medium] = parse_string(campaign.medium)
103
104
  @sessionopts[:campaign_medium] ||= "(none)"
104
105
 
105
106
  @sessionopts.delete(:campaign_keyword)
106
- @sessionopts[:campaign_keyword] = campaign.keyword if campaign.keyword
107
+ @sessionopts[:campaign_keyword] = campaign.keyword unless campaign.keyword.to_s.empty?
107
108
 
108
109
  @sessionopts.delete(:campaign_content)
109
- @sessionopts[:campaign_content] = campaign.content if campaign.content
110
+ @sessionopts[:campaign_content] = campaign.content unless campaign.content.to_s.empty?
110
111
  end
111
112
  end
112
113
  end
113
114
 
114
115
 
115
116
  private
117
+ def parse_string(value)
118
+ (value.to_s.empty? ? nil : value)
119
+ end
120
+
116
121
  # Sanity check that we have needed params to even call GA
117
122
  def validate_session_parameters(params)
118
123
  raise GoogleAnalyticsRequiredParameterMissingError, "Protocol version is required" unless params[:protocol_version]
@@ -128,7 +133,9 @@ module GabbaGMP
128
133
  # makes the tracking call to Google Analytics
129
134
  def hey(params)
130
135
  validate_session_parameters(params)
131
- query = params.map {|k,v| "#{GA_PARAMS[k]}=#{URI.escape("#{v}", Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}" }.join('&')
136
+ params_formatted = params.each_pair {|k,v| params[k] = "#{v}"}.keep_if {|k,v| !v.nil? and !v.empty?}
137
+ params_formatted = params_formatted.map {|k,v| "#{GA_PARAMS[k]}=#{URI.escape(v, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}" }
138
+ query = params_formatted.join('&')
132
139
 
133
140
  @http ||= Net::HTTP::Persistent.new 'GabbaGMP'
134
141
 
@@ -1,5 +1,5 @@
1
1
  module GabbaGMP
2
2
  unless const_defined?('VERSION')
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.2"
4
4
  end
5
5
  end
@@ -56,6 +56,26 @@ describe GabbaGMP::GabbaGMP::Campaign do
56
56
  it "is not present?" do
57
57
  campaign = GabbaGMP::GabbaGMP::Campaign.new
58
58
  expect(campaign.present?).to be(false)
59
+
60
+ campaign = GabbaGMP::GabbaGMP::Campaign.new
61
+ campaign.name = ''
62
+ expect(campaign.present?).to be(false)
63
+
64
+ campaign = GabbaGMP::GabbaGMP::Campaign.new
65
+ campaign.source = ''
66
+ expect(campaign.present?).to be(false)
67
+
68
+ campaign = GabbaGMP::GabbaGMP::Campaign.new
69
+ campaign.medium = ''
70
+ expect(campaign.present?).to be(false)
71
+
72
+ campaign = GabbaGMP::GabbaGMP::Campaign.new
73
+ campaign.keyword = ''
74
+ expect(campaign.present?).to be(false)
75
+
76
+ campaign = GabbaGMP::GabbaGMP::Campaign.new
77
+ campaign.content = ''
78
+ expect(campaign.present?).to be(false)
59
79
  end
60
80
  end
61
81
  end
@@ -14,20 +14,20 @@ describe GabbaGMP::GabbaGMP::CustomVars do
14
14
  it "#set_custom_var(index, name, value) using pageview" do
15
15
  gabbaGmp.set_custom_var(1, "Dogs", "Black")
16
16
  gabbaGmp.page_view(request)
17
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "", tid: "tracker", cid: "1234", t: "pageview", dp: "", cd1: "Black"}))
17
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview", cd1: "Black"}))
18
18
 
19
19
  gabbaGmp.set_custom_var(1, "Dog", "Spotty")
20
20
  gabbaGmp.set_custom_var(2, "Lemming", "Fall")
21
21
  gabbaGmp.set_custom_var(3, "Kite", "Surf")
22
22
  gabbaGmp.set_custom_var(200, "Cabbage", "Patch")
23
23
  gabbaGmp.page_view(request)
24
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "", tid: "tracker", cid: "1234", t: "pageview", dp: "",
24
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview",
25
25
  cd1: "Spotty", cd2: "Fall", cd3: "Surf", cd200: "Patch"}))
26
26
 
27
27
  expect {gabbaGmp.set_custom_var(201, "Cabbage", "Patch")}.to raise_error(GabbaGMP::GoogleAnalyticsInvalidParameterError)
28
28
 
29
29
  gabbaGmp.page_view(request, nil, dimension_4: "Ni!!")
30
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "", tid: "tracker", cid: "1234", t: "pageview", dp: "",
30
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview",
31
31
  cd1: "Spotty", cd2: "Fall", cd3: "Surf", cd200: "Patch", cd4: "Ni!!"}))
32
32
  end
33
33
 
@@ -15,12 +15,20 @@ describe GabbaGMP::GabbaGMP::Event do
15
15
  gabbaGmp.event("Cats", "Action")
16
16
  expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
17
17
  ec: "Cats", ea: "Action"}))
18
+
19
+ gabbaGmp.event("Cats", "Action","")
20
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
21
+ ec: "Cats", ea: "Action"}), 2)
18
22
  end
19
23
 
20
24
  it "#event(category, action, label)" do
21
25
  gabbaGmp.event("Cats", "Action", "Label")
22
26
  expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
23
27
  ec: "Cats", ea: "Action", el: "Label"}))
28
+
29
+ gabbaGmp.event("Cats", "Action", "Label", "")
30
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
31
+ ec: "Cats", ea: "Action", el: "Label"}), 2)
24
32
  end
25
33
 
26
34
  it "#event(category, action, label, value)" do
@@ -112,6 +112,18 @@ describe GabbaGMP::GabbaGMP do
112
112
  gabbaGmp.event("Cats", "Action")
113
113
  expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
114
114
  ec: "Cats", ea: "Action", cn: "(direct)", cs: "Confidential", cm: "(none)", cc: "Contents"}))
115
+
116
+ campaign = GabbaGMP::GabbaGMP::Campaign.new()
117
+ campaign.name = "First Campaign"
118
+ campaign.source = ""
119
+ campaign.medium = ""
120
+ campaign.keyword = ""
121
+ campaign.content = ""
122
+
123
+ gabbaGmp.campaign = campaign
124
+ gabbaGmp.event("Cats", "Action")
125
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "event",
126
+ ec: "Cats", ea: "Action", cn: "First Campaign", cs: "(direct)", cm: "(none)"}))
115
127
  end
116
128
  end
117
129
  describe "#campaign=" do
@@ -13,16 +13,16 @@ describe GabbaGMP::GabbaGMP::PageView do
13
13
 
14
14
  it "#page_view(request)" do
15
15
  gabbaGmp.page_view(request)
16
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "", tid: "tracker", cid: "1234", t: "pageview", dp: ""}))
16
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview"}))
17
17
 
18
18
  request.fullpath = "/amazing/things"
19
19
  gabbaGmp.page_view(request)
20
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "", tid: "tracker", cid: "1234", t: "pageview", dp: "/amazing/things"}))
20
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview", dp: "/amazing/things"}))
21
21
  end
22
22
 
23
23
  it "#page_view(request, title)" do
24
24
  gabbaGmp.page_view(request, "Title")
25
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", dp: ""}))
25
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview"}))
26
26
  end
27
27
 
28
28
  it "#page_view(request, title, options)" do
@@ -35,10 +35,10 @@ describe GabbaGMP::GabbaGMP::PageView do
35
35
  expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", dp: "/Nowhere"}))
36
36
 
37
37
  gabbaGmp.page_view(request)
38
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "", tid: "tracker", cid: "1234", t: "pageview", dp: ""}))
38
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", tid: "tracker", cid: "1234", t: "pageview"}))
39
39
 
40
40
  gabbaGmp.page_view(request, "Title", {user_language: "en-au"})
41
- expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", ul: "en-au", dp: ""}))
41
+ expect_query(MockRequest::DEFAULT_PARAMS.merge({v: "1", dt: "Title", tid: "tracker", cid: "1234", t: "pageview", ul: "en-au"}))
42
42
  end
43
43
  end
44
44
  end
data/spec/spec_helper.rb CHANGED
@@ -11,8 +11,8 @@ def stub_analytics(expected_params)
11
11
  ).to_return(:status => 200, :body => '', :headers => {})
12
12
  end
13
13
 
14
- def expect_query(query_params)
15
- expect(WebMock).to have_requested(:get, "www.google-analytics.com\/collect").with(:query => query_params)
14
+ def expect_query(query_params, times = 1)
15
+ expect(WebMock).to have_requested(:get, "www.google-analytics.com\/collect").with(:query => query_params).times(times)
16
16
  end
17
17
 
18
18
  class MockCookies
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gabba-gmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian West
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-15 00:00:00.000000000 Z
11
+ date: 2015-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-http-persistent