garb 0.4.2 → 0.5.0
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.
- data/lib/garb/filter_parameters.rb +45 -0
- data/lib/garb/operator.rb +2 -2
- data/lib/garb/profile.rb +2 -2
- data/lib/garb/report.rb +0 -1
- data/lib/garb/report_parameter.rb +2 -13
- data/lib/garb/resource.rb +10 -28
- data/lib/garb/version.rb +2 -2
- data/lib/garb.rb +9 -3
- data/test/unit/{account_test.rb → garb/account_test.rb} +1 -1
- data/test/unit/{authentication_request_test.rb → garb/authentication_request_test.rb} +1 -1
- data/test/unit/{data_request_test.rb → garb/data_request_test.rb} +1 -1
- data/test/unit/garb/filter_parameters_test.rb +65 -0
- data/test/unit/{oauth_session_test.rb → garb/oauth_session_test.rb} +1 -1
- data/test/unit/{operator_test.rb → garb/operator_test.rb} +6 -6
- data/test/unit/{profile_test.rb → garb/profile_test.rb} +1 -1
- data/test/unit/{report_parameter_test.rb → garb/report_parameter_test.rb} +1 -20
- data/test/unit/{report_response_test.rb → garb/report_response_test.rb} +2 -2
- data/test/unit/{report_test.rb → garb/report_test.rb} +10 -2
- data/test/unit/{resource_test.rb → garb/resource_test.rb} +1 -1
- data/test/unit/{session_test.rb → garb/session_test.rb} +1 -1
- data/test/unit/garb_test.rb +9 -5
- metadata +26 -29
- data/lib/extensions/string.rb +0 -9
- data/lib/extensions/symbol.rb +0 -36
- data/test/unit/string_test.rb +0 -13
- data/test/unit/symbol_test.rb +0 -44
@@ -0,0 +1,45 @@
|
|
1
|
+
module Garb
|
2
|
+
class FilterParameters
|
3
|
+
def self.define_operator(key, operation)
|
4
|
+
class_eval <<-CODE
|
5
|
+
def #{key}(target, value)
|
6
|
+
self.parameters << {Operator.new(target, '#{operation}') => value}
|
7
|
+
end
|
8
|
+
CODE
|
9
|
+
end
|
10
|
+
|
11
|
+
define_operator(:eql, '==')
|
12
|
+
define_operator(:not_eql, '!=')
|
13
|
+
define_operator(:gt, '>')
|
14
|
+
define_operator(:gte, '>=')
|
15
|
+
define_operator(:lt, '<')
|
16
|
+
define_operator(:lte, '<=')
|
17
|
+
define_operator(:matches, '==')
|
18
|
+
define_operator(:does_not_match, '!=')
|
19
|
+
define_operator(:contains, '=~')
|
20
|
+
define_operator(:does_not_contain, '!~')
|
21
|
+
define_operator(:substring, '=@')
|
22
|
+
define_operator(:not_substring, '!@')
|
23
|
+
|
24
|
+
attr_accessor :parameters
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
self.parameters = []
|
28
|
+
end
|
29
|
+
|
30
|
+
def filters(&block)
|
31
|
+
instance_eval &block
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_params
|
35
|
+
value = self.parameters.map do |param|
|
36
|
+
param.map do |k,v|
|
37
|
+
next unless k.is_a?(Garb::Operator)
|
38
|
+
"#{k.target}#{URI.encode(k.operator.to_s, /[=<>]/)}#{CGI::escape(v.to_s)}"
|
39
|
+
end.join(',') # Hash AND
|
40
|
+
end.join(';') # Array OR
|
41
|
+
|
42
|
+
value.empty? ? {} : {'filters' => value}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/garb/operator.rb
CHANGED
@@ -4,11 +4,11 @@ module Garb
|
|
4
4
|
attr_reader :target, :operator, :prefix
|
5
5
|
|
6
6
|
def initialize(target, operator, prefix=false)
|
7
|
-
@target =
|
7
|
+
@target = Garb.to_google_analytics(target)
|
8
8
|
@operator = operator
|
9
9
|
@prefix = prefix
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def to_google_analytics
|
13
13
|
@prefix ? "#{operator}#{target}" : "#{target}#{operator}"
|
14
14
|
end
|
data/lib/garb/profile.rb
CHANGED
@@ -13,7 +13,7 @@ module Garb
|
|
13
13
|
attribute :value, String
|
14
14
|
|
15
15
|
def instance_name
|
16
|
-
|
16
|
+
Garb.from_google_analytics(name)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -38,7 +38,7 @@ module Garb
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def id
|
41
|
-
@table_id
|
41
|
+
Garb.from_google_analytics(@table_id)
|
42
42
|
end
|
43
43
|
|
44
44
|
def self.all
|
data/lib/garb/report.rb
CHANGED
@@ -18,19 +18,8 @@ module Garb
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def to_params
|
21
|
-
|
22
|
-
|
23
|
-
when Hash
|
24
|
-
elem.collect do |k,v|
|
25
|
-
next unless k.is_a?(Operator)
|
26
|
-
"#{k.target}#{URI.encode(k.operator.to_s, /[=<>]/)}#{CGI::escape(v.to_s)}"
|
27
|
-
end.join(';')
|
28
|
-
else
|
29
|
-
elem.to_google_analytics
|
30
|
-
end
|
31
|
-
end.join(',')
|
32
|
-
|
33
|
-
params.empty? ? {} : {self.name => params}
|
21
|
+
value = self.elements.map{|param| Garb.to_google_analytics(param)}.join(',')
|
22
|
+
value.empty? ? {} : {self.name => value}
|
34
23
|
end
|
35
24
|
end
|
36
25
|
end
|
data/lib/garb/resource.rb
CHANGED
@@ -3,7 +3,7 @@ module Garb
|
|
3
3
|
MONTH = 2592000
|
4
4
|
URL = "https://www.google.com/analytics/feeds/data"
|
5
5
|
|
6
|
-
%w(metrics dimensions
|
6
|
+
%w(metrics dimensions sort).each do |parameter|
|
7
7
|
class_eval <<-CODE
|
8
8
|
def #{parameter}(*fields)
|
9
9
|
@#{parameter} ||= ReportParameter.new(:#{parameter})
|
@@ -16,33 +16,15 @@ module Garb
|
|
16
16
|
CODE
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
#
|
29
|
-
# def filters(*hashes)
|
30
|
-
# @filters ||= ReportParameter.new(:filters)
|
31
|
-
# @filters << hashes
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# def sort(*fields)
|
35
|
-
# @sort ||= ReportParameter.new(:sort)
|
36
|
-
# @sort << fields
|
37
|
-
# end
|
38
|
-
#
|
39
|
-
# def clear_filters
|
40
|
-
# @filters = ReportParameter.new(:filters)
|
41
|
-
# end
|
42
|
-
#
|
43
|
-
# def clear_sort
|
44
|
-
# @sort = ReportParameter.new(:sort)
|
45
|
-
# end
|
19
|
+
def filters(&block)
|
20
|
+
@filter_parameters ||= FilterParameters.new
|
21
|
+
@filter_parameters.filters(&block) if block_given?
|
22
|
+
@filter_parameters
|
23
|
+
end
|
24
|
+
|
25
|
+
def clear_filters
|
26
|
+
@filter_parameters = FilterParameters.new
|
27
|
+
end
|
46
28
|
|
47
29
|
def results(profile, opts = {}, &block)
|
48
30
|
@profile = profile.is_a?(Profile) ? profile : Profile.first(profile)
|
data/lib/garb/version.rb
CHANGED
data/lib/garb.rb
CHANGED
@@ -15,15 +15,21 @@ require 'garb/data_request'
|
|
15
15
|
require 'garb/session'
|
16
16
|
require 'garb/profile'
|
17
17
|
require 'garb/account'
|
18
|
+
require 'garb/filter_parameters'
|
18
19
|
require 'garb/report_parameter'
|
19
20
|
require 'garb/report_response'
|
20
21
|
require 'garb/resource'
|
21
22
|
require 'garb/report'
|
22
23
|
require 'garb/operator'
|
23
24
|
|
24
|
-
require 'extensions/string'
|
25
|
-
require 'extensions/symbol'
|
26
|
-
|
27
25
|
module Garb
|
28
26
|
GA = "http://schemas.google.com/analytics/2008"
|
27
|
+
|
28
|
+
def self.to_google_analytics(thing)
|
29
|
+
"ga:#{thing.to_s.camelize(:lower)}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.from_google_analytics(thing)
|
33
|
+
thing.to_s.gsub(/^ga\:/, '').underscore
|
34
|
+
end
|
29
35
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', '/test_helper')
|
2
|
+
|
3
|
+
module Garb
|
4
|
+
class FilterParametersTest < MiniTest::Unit::TestCase
|
5
|
+
def self.should_define_operator(operator, param)
|
6
|
+
should "create an operator and add to parameters for the #{operator} method" do
|
7
|
+
new_operator = stub
|
8
|
+
symbol = :foo
|
9
|
+
|
10
|
+
Garb::Operator.expects(:new).with(:foo, param).returns(new_operator)
|
11
|
+
@filter_parameters.send(operator.to_sym, :foo, 100)
|
12
|
+
|
13
|
+
parameter = {new_operator => 100}
|
14
|
+
assert_equal parameter, @filter_parameters.parameters.last
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "A FilterParameters" do
|
19
|
+
setup do
|
20
|
+
@filter_parameters = FilterParameters.new
|
21
|
+
end
|
22
|
+
|
23
|
+
should_define_operator(:eql, '==')
|
24
|
+
should_define_operator(:not_eql, '!=')
|
25
|
+
should_define_operator(:gt, '>')
|
26
|
+
should_define_operator(:gte, '>=')
|
27
|
+
should_define_operator(:lt, '<')
|
28
|
+
should_define_operator(:lte, '<=')
|
29
|
+
should_define_operator(:matches, '==')
|
30
|
+
should_define_operator(:does_not_match, '!=')
|
31
|
+
should_define_operator(:contains, '=~')
|
32
|
+
should_define_operator(:does_not_contain, '!~')
|
33
|
+
should_define_operator(:substring, '=@')
|
34
|
+
should_define_operator(:not_substring, '!@')
|
35
|
+
|
36
|
+
should "instance eval for filters" do
|
37
|
+
blk = lambda {"in a block"}
|
38
|
+
|
39
|
+
@filter_parameters.expects(:instance_eval)
|
40
|
+
@filter_parameters.filters(&blk)
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when converting parameters hash into query string parameters" do
|
44
|
+
should "parameterize hash operators and join elements" do
|
45
|
+
@filter_parameters.filters do
|
46
|
+
eql(:city, 'New York')
|
47
|
+
eql(:state, 'New York')
|
48
|
+
end
|
49
|
+
|
50
|
+
params = {'filters' => 'ga:city%3D%3DNew+York;ga:state%3D%3DNew+York'}
|
51
|
+
assert_equal params, @filter_parameters.to_params
|
52
|
+
end
|
53
|
+
|
54
|
+
should "properly encode operators" do
|
55
|
+
@filter_parameters.filters do
|
56
|
+
contains(:request_uri, 'New York')
|
57
|
+
end
|
58
|
+
|
59
|
+
params = {'filters' => 'ga:requestUri%3D~New+York'}
|
60
|
+
assert_equal params, @filter_parameters.to_params
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', '/test_helper')
|
2
2
|
|
3
3
|
module Garb
|
4
4
|
class OperatorTest < MiniTest::Unit::TestCase
|
@@ -6,21 +6,21 @@ module Garb
|
|
6
6
|
should "lower camelize the target" do
|
7
7
|
assert_equal "ga:uniqueVisits=", Operator.new(:unique_visits, "=").to_google_analytics
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
should "return target and operator together" do
|
11
11
|
assert_equal "ga:metric=", Operator.new(:metric, "=").to_google_analytics
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
should "prefix the operator to the target" do
|
15
15
|
assert_equal "-ga:metric", Operator.new(:metric, "-", true).to_google_analytics
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
should "know if it is equal to another operator" do
|
19
19
|
op1 = Operator.new(:hello, "==")
|
20
20
|
op2 = Operator.new(:hello, "==")
|
21
21
|
assert_equal op1, op2
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
should "not be equal to another operator if target, operator, or prefix is different" do
|
25
25
|
op1 = Operator.new(:hello, "==")
|
26
26
|
op2 = Operator.new(:hello, "==", true)
|
@@ -36,4 +36,4 @@ module Garb
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
-
end
|
39
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', '/test_helper')
|
2
2
|
|
3
3
|
module Garb
|
4
4
|
class ReportParameterTest < MiniTest::Unit::TestCase
|
@@ -36,25 +36,6 @@ module Garb
|
|
36
36
|
@metrics << :request_uri << :city
|
37
37
|
assert_equal({'metrics' => 'ga:requestUri,ga:city'}, @metrics.to_params)
|
38
38
|
end
|
39
|
-
|
40
|
-
should "join operator elements" do
|
41
|
-
@metrics << :city.desc
|
42
|
-
assert_equal({'metrics' => '-ga:city'}, @metrics.to_params)
|
43
|
-
end
|
44
|
-
|
45
|
-
should "parameterize hash operators and join elements" do
|
46
|
-
@metrics << {:city.eql => 'New York'}
|
47
|
-
params = {'metrics' => 'ga:city%3D%3DNew+York'}
|
48
|
-
|
49
|
-
assert_equal params, @metrics.to_params
|
50
|
-
end
|
51
|
-
|
52
|
-
should "properly encode operators" do
|
53
|
-
@metrics << {:request_uri.contains => 'New York'}
|
54
|
-
params = {'metrics' => 'ga:requestUri%3D~New+York'}
|
55
|
-
|
56
|
-
assert_equal params, @metrics.to_params
|
57
|
-
end
|
58
39
|
end
|
59
40
|
end
|
60
41
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', '/test_helper')
|
2
2
|
|
3
3
|
module Garb
|
4
4
|
class ReportResponseTest < MiniTest::Unit::TestCase
|
5
5
|
context "An instance of the ReportResponse class" do
|
6
6
|
setup do
|
7
|
-
@xml = File.read(File.join(File.dirname(__FILE__), '..', "/fixtures/report_feed.xml"))
|
7
|
+
@xml = File.read(File.join(File.dirname(__FILE__), '..', '..', "/fixtures/report_feed.xml"))
|
8
8
|
@response = ReportResponse.new(@xml)
|
9
9
|
end
|
10
10
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', '/test_helper')
|
2
2
|
|
3
3
|
module Garb
|
4
4
|
# Also tests Garb::Resource, which is the basis for Garb::Report
|
@@ -11,7 +11,7 @@ module Garb
|
|
11
11
|
@report = Report.new(@profile)
|
12
12
|
end
|
13
13
|
|
14
|
-
%w(metrics dimensions
|
14
|
+
%w(metrics dimensions sort).each do |param|
|
15
15
|
should "have parameters for #{param}" do
|
16
16
|
assert @report.send(:"#{param}").is_a?(ReportParameter)
|
17
17
|
end
|
@@ -21,6 +21,14 @@ module Garb
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
should "have filter parameters for filters" do
|
25
|
+
assert @report.filters.is_a?(FilterParameters)
|
26
|
+
end
|
27
|
+
|
28
|
+
should "clear filter parameters for filters" do
|
29
|
+
assert_equal({}, @report.filters.to_params)
|
30
|
+
end
|
31
|
+
|
24
32
|
should "have default parameters" do
|
25
33
|
@report.stubs(:format_time).returns('2009-08-01')
|
26
34
|
params = {'ids' => 'ga:1234', 'start-date' => '2009-08-01', 'end-date' => '2009-08-01'}
|
data/test/unit/garb_test.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
2
2
|
|
3
3
|
class GarbTest < MiniTest::Unit::TestCase
|
4
|
-
context "
|
5
|
-
should
|
6
|
-
|
4
|
+
context "The Garb module" do
|
5
|
+
should 'prefix a string with ga: for GA' do
|
6
|
+
assert_equal 'ga:bob', Garb.to_google_analytics('bob')
|
7
7
|
end
|
8
|
-
|
9
|
-
|
8
|
+
|
9
|
+
should 'remove ga: prefix' do
|
10
|
+
assert_equal 'bob', Garb.from_google_analytics('ga:bob')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: garb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Pitale
|
@@ -44,11 +44,10 @@ extra_rdoc_files: []
|
|
44
44
|
files:
|
45
45
|
- README.md
|
46
46
|
- Rakefile
|
47
|
-
- lib/extensions/string.rb
|
48
|
-
- lib/extensions/symbol.rb
|
49
47
|
- lib/garb/account.rb
|
50
48
|
- lib/garb/authentication_request.rb
|
51
49
|
- lib/garb/data_request.rb
|
50
|
+
- lib/garb/filter_parameters.rb
|
52
51
|
- lib/garb/oauth_session.rb
|
53
52
|
- lib/garb/operator.rb
|
54
53
|
- lib/garb/profile.rb
|
@@ -64,20 +63,19 @@ files:
|
|
64
63
|
- test/fixtures/profile_feed.xml
|
65
64
|
- test/fixtures/report_feed.xml
|
66
65
|
- test/test_helper.rb
|
67
|
-
- test/unit/account_test.rb
|
68
|
-
- test/unit/authentication_request_test.rb
|
69
|
-
- test/unit/data_request_test.rb
|
66
|
+
- test/unit/garb/account_test.rb
|
67
|
+
- test/unit/garb/authentication_request_test.rb
|
68
|
+
- test/unit/garb/data_request_test.rb
|
69
|
+
- test/unit/garb/filter_parameters_test.rb
|
70
|
+
- test/unit/garb/oauth_session_test.rb
|
71
|
+
- test/unit/garb/operator_test.rb
|
72
|
+
- test/unit/garb/profile_test.rb
|
73
|
+
- test/unit/garb/report_parameter_test.rb
|
74
|
+
- test/unit/garb/report_response_test.rb
|
75
|
+
- test/unit/garb/report_test.rb
|
76
|
+
- test/unit/garb/resource_test.rb
|
77
|
+
- test/unit/garb/session_test.rb
|
70
78
|
- test/unit/garb_test.rb
|
71
|
-
- test/unit/oauth_session_test.rb
|
72
|
-
- test/unit/operator_test.rb
|
73
|
-
- test/unit/profile_test.rb
|
74
|
-
- test/unit/report_parameter_test.rb
|
75
|
-
- test/unit/report_response_test.rb
|
76
|
-
- test/unit/report_test.rb
|
77
|
-
- test/unit/resource_test.rb
|
78
|
-
- test/unit/session_test.rb
|
79
|
-
- test/unit/string_test.rb
|
80
|
-
- test/unit/symbol_test.rb
|
81
79
|
has_rdoc: true
|
82
80
|
homepage: http://github.com/vigetlabs/garb
|
83
81
|
licenses: []
|
@@ -111,17 +109,16 @@ test_files:
|
|
111
109
|
- test/fixtures/profile_feed.xml
|
112
110
|
- test/fixtures/report_feed.xml
|
113
111
|
- test/test_helper.rb
|
114
|
-
- test/unit/account_test.rb
|
115
|
-
- test/unit/authentication_request_test.rb
|
116
|
-
- test/unit/data_request_test.rb
|
112
|
+
- test/unit/garb/account_test.rb
|
113
|
+
- test/unit/garb/authentication_request_test.rb
|
114
|
+
- test/unit/garb/data_request_test.rb
|
115
|
+
- test/unit/garb/filter_parameters_test.rb
|
116
|
+
- test/unit/garb/oauth_session_test.rb
|
117
|
+
- test/unit/garb/operator_test.rb
|
118
|
+
- test/unit/garb/profile_test.rb
|
119
|
+
- test/unit/garb/report_parameter_test.rb
|
120
|
+
- test/unit/garb/report_response_test.rb
|
121
|
+
- test/unit/garb/report_test.rb
|
122
|
+
- test/unit/garb/resource_test.rb
|
123
|
+
- test/unit/garb/session_test.rb
|
117
124
|
- test/unit/garb_test.rb
|
118
|
-
- test/unit/oauth_session_test.rb
|
119
|
-
- test/unit/operator_test.rb
|
120
|
-
- test/unit/profile_test.rb
|
121
|
-
- test/unit/report_parameter_test.rb
|
122
|
-
- test/unit/report_response_test.rb
|
123
|
-
- test/unit/report_test.rb
|
124
|
-
- test/unit/resource_test.rb
|
125
|
-
- test/unit/session_test.rb
|
126
|
-
- test/unit/string_test.rb
|
127
|
-
- test/unit/symbol_test.rb
|
data/lib/extensions/string.rb
DELETED
data/lib/extensions/symbol.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
class Symbol
|
2
|
-
# OPERATORS
|
3
|
-
|
4
|
-
def self.operator(operators)
|
5
|
-
operators.each do |method, operator|
|
6
|
-
class_eval <<-CODE
|
7
|
-
def #{method}
|
8
|
-
Garb::Operator.new(self, '#{operator}')
|
9
|
-
end
|
10
|
-
CODE
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
# Sorting
|
15
|
-
def desc
|
16
|
-
Garb::Operator.new(self, '-', true)
|
17
|
-
end
|
18
|
-
|
19
|
-
operator :eql => '==',
|
20
|
-
:not_eql => '!=',
|
21
|
-
:gt => '>',
|
22
|
-
:gte => '>=',
|
23
|
-
:lt => '<',
|
24
|
-
:lte => '<=',
|
25
|
-
:matches => '==',
|
26
|
-
:does_not_match => '!=',
|
27
|
-
:contains => '=~',
|
28
|
-
:does_not_contain => '!~',
|
29
|
-
:substring => '=@',
|
30
|
-
:not_substring => '!@'
|
31
|
-
|
32
|
-
# Metric filters
|
33
|
-
def to_google_analytics
|
34
|
-
self.to_s.camelize(:lower).to_google_analytics
|
35
|
-
end
|
36
|
-
end
|
data/test/unit/string_test.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
2
|
-
|
3
|
-
class StringTest < MiniTest::Unit::TestCase
|
4
|
-
context "An instance of a String" do
|
5
|
-
should 'prefix a string with ga: for GA' do
|
6
|
-
assert_equal 'ga:bob', 'bob'.to_google_analytics
|
7
|
-
end
|
8
|
-
|
9
|
-
should 'remove ga: prefix' do
|
10
|
-
assert_equal 'bob', 'ga:bob'.from_google_analytics
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
data/test/unit/symbol_test.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '/test_helper')
|
2
|
-
|
3
|
-
class SymbolTest < MiniTest::Unit::TestCase
|
4
|
-
|
5
|
-
context "An instance of the Symbol class" do
|
6
|
-
|
7
|
-
should "properly format itself for ga" do
|
8
|
-
assert_equal "ga:requestUri", :request_uri.to_google_analytics
|
9
|
-
end
|
10
|
-
|
11
|
-
should "define a :desc operator" do
|
12
|
-
operator = stub()
|
13
|
-
symbol = :foo
|
14
|
-
|
15
|
-
Garb::Operator.expects(:new).with(:foo, '-', true).returns(operator)
|
16
|
-
assert_equal operator, :foo.desc
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.should_define_operator(operators)
|
20
|
-
operators.each do |method, operator|
|
21
|
-
should "define an :#{method} operator" do
|
22
|
-
new_operator = stub()
|
23
|
-
symbol = :foo
|
24
|
-
|
25
|
-
Garb::Operator.expects(:new).with(:foo, operator).returns(new_operator)
|
26
|
-
assert_equal new_operator, :foo.send(method)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
should_define_operator :eql => '==',
|
32
|
-
:not_eql => '!=',
|
33
|
-
:gt => '>',
|
34
|
-
:gte => '>=',
|
35
|
-
:lt => '<',
|
36
|
-
:lte => '<=',
|
37
|
-
:matches => '==',
|
38
|
-
:does_not_match => '!=',
|
39
|
-
:contains => '=~',
|
40
|
-
:does_not_contain => '!~',
|
41
|
-
:substring => '=@',
|
42
|
-
:not_substring => '!@'
|
43
|
-
end
|
44
|
-
end
|