gxapi_rails 0.0.4 → 0.0.5
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 +4 -4
- data/README.md +11 -5
- data/Rakefile +7 -0
- data/lib/gxapi-rails.rb +1 -0
- data/lib/gxapi.rb +7 -6
- data/lib/gxapi/base.rb +24 -11
- data/lib/gxapi/controller_methods.rb +16 -3
- data/lib/gxapi/experiment_identifier.rb +111 -0
- data/lib/gxapi/google_analytics.rb +9 -7
- data/lib/gxapi/version.rb +1 -1
- data/lib/gxapi_rails.rb +1 -0
- data/spec/dummy/log/test.log +460 -0
- data/spec/lib/gxapi/base_spec.rb +12 -1
- data/spec/lib/gxapi/experiment_identifier_spec.rb +87 -0
- data/spec/lib/gxapi/google_analytics_spec.rb +2 -1
- data/spec/spec_helper.rb +2 -0
- metadata +119 -2
data/spec/lib/gxapi/base_spec.rb
CHANGED
@@ -19,6 +19,10 @@ describe Gxapi::Base do
|
|
19
19
|
"Untitled experiment"
|
20
20
|
end
|
21
21
|
|
22
|
+
let(:test_experiment_id) do
|
23
|
+
"lj5s_ZvWSJSZLphnkpP-Xw"
|
24
|
+
end
|
25
|
+
|
22
26
|
context "#env" do
|
23
27
|
it "should delegate to its class" do
|
24
28
|
subject.env.should eql Gxapi.env
|
@@ -27,7 +31,7 @@ describe Gxapi::Base do
|
|
27
31
|
|
28
32
|
context "#get_variant" do
|
29
33
|
|
30
|
-
it "should make a call to
|
34
|
+
it "should make a call to Google Analytics and return a future" do
|
31
35
|
variant = subject.get_variant(test_experiment_name)
|
32
36
|
valid_variants.should include variant.value.name
|
33
37
|
[0, 1].should include variant.value.index
|
@@ -44,6 +48,13 @@ describe Gxapi::Base do
|
|
44
48
|
|
45
49
|
end
|
46
50
|
|
51
|
+
it "lets us search by experiment id" do
|
52
|
+
|
53
|
+
variant = subject.get_variant(id: test_experiment_id)
|
54
|
+
expect(variant.value.experiment_id).to eql(test_experiment_id)
|
55
|
+
|
56
|
+
end
|
57
|
+
|
47
58
|
it "should time out after 2 seconds and return the default value" do
|
48
59
|
|
49
60
|
Gxapi.cache.stubs(:fetch).yields{sleep(3)}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module GxApi
|
4
|
+
|
5
|
+
describe ExperimentIdentifier do
|
6
|
+
|
7
|
+
subject {
|
8
|
+
ExperimentIdentifier.new("Test Test")
|
9
|
+
}
|
10
|
+
|
11
|
+
context "Generic Methods" do
|
12
|
+
|
13
|
+
context "#to_key" do
|
14
|
+
|
15
|
+
it "turns its value into a string for a cache key" do
|
16
|
+
expect(subject.to_key).to eql("test_test")
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
context "IdIdentifier" do
|
25
|
+
|
26
|
+
subject {
|
27
|
+
ExperimentIdentifier.new(id: id)
|
28
|
+
}
|
29
|
+
|
30
|
+
let(:id) {
|
31
|
+
"123"
|
32
|
+
}
|
33
|
+
|
34
|
+
context '#matches_experiment?' do
|
35
|
+
|
36
|
+
it 'matches by id' do
|
37
|
+
experiment = stub(id: id)
|
38
|
+
expect(subject.matches_experiment?(experiment)).to be_true
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
context '#value' do
|
44
|
+
|
45
|
+
it 'returns the id as its value' do
|
46
|
+
expect(subject.value).to eq(id)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
context "NameIdentifier" do
|
57
|
+
|
58
|
+
subject {
|
59
|
+
ExperimentIdentifier.new(name)
|
60
|
+
}
|
61
|
+
|
62
|
+
let(:name) {
|
63
|
+
"123"
|
64
|
+
}
|
65
|
+
|
66
|
+
context '#matches_experiment?' do
|
67
|
+
|
68
|
+
it 'matches by name' do
|
69
|
+
experiment = stub(name: name)
|
70
|
+
expect(subject.matches_experiment?(experiment)).to be_true
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
context '#value' do
|
76
|
+
|
77
|
+
it 'returns the id as its value' do
|
78
|
+
expect(subject.value).to eq(name)
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
@@ -21,7 +21,8 @@ module Gxapi
|
|
21
21
|
|
22
22
|
it "should filter by name" do
|
23
23
|
experiment = subject.get_experiments.first
|
24
|
-
|
24
|
+
identifier = GxApi::ExperimentIdentifier.new(experiment.name)
|
25
|
+
subject.get_experiment(identifier).should eql(experiment)
|
25
26
|
end
|
26
27
|
|
27
28
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gxapi_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Langevin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -80,6 +80,118 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: capybara
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: coffee-rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: debugger
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: mocha
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec-rails
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: sass-rails
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: sqlite3
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - '>='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
83
195
|
description: Google Analytics and integration
|
84
196
|
email: dan.langevin@lifebooker.com
|
85
197
|
executables: []
|
@@ -92,10 +204,13 @@ files:
|
|
92
204
|
- lib/gxapi/base.rb
|
93
205
|
- lib/gxapi/controller_methods.rb
|
94
206
|
- lib/gxapi/engine.rb
|
207
|
+
- lib/gxapi/experiment_identifier.rb
|
95
208
|
- lib/gxapi/google_analytics.rb
|
96
209
|
- lib/gxapi/ostruct.rb
|
97
210
|
- lib/gxapi/version.rb
|
211
|
+
- lib/gxapi-rails.rb
|
98
212
|
- lib/gxapi.rb
|
213
|
+
- lib/gxapi_rails.rb
|
99
214
|
- lib/tasks/gxapi.rake
|
100
215
|
- LICENSE.txt
|
101
216
|
- Rakefile
|
@@ -153,6 +268,7 @@ files:
|
|
153
268
|
- spec/features/display_variant_js_spec.rb
|
154
269
|
- spec/helpers/gxapi_helper_spec.rb
|
155
270
|
- spec/lib/gxapi/base_spec.rb
|
271
|
+
- spec/lib/gxapi/experiment_identifier_spec.rb
|
156
272
|
- spec/lib/gxapi/google_analytics_spec.rb
|
157
273
|
- spec/lib/gxapi_spec.rb
|
158
274
|
- spec/spec_helper.rb
|
@@ -233,6 +349,7 @@ test_files:
|
|
233
349
|
- spec/features/display_variant_js_spec.rb
|
234
350
|
- spec/helpers/gxapi_helper_spec.rb
|
235
351
|
- spec/lib/gxapi/base_spec.rb
|
352
|
+
- spec/lib/gxapi/experiment_identifier_spec.rb
|
236
353
|
- spec/lib/gxapi/google_analytics_spec.rb
|
237
354
|
- spec/lib/gxapi_spec.rb
|
238
355
|
- spec/spec_helper.rb
|