gabba-gmp 1.0.1 → 1.0.2

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.
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