gxapi_rails 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 myna and return a future" do
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
- subject.get_experiment(experiment.name).should eql(experiment)
24
+ identifier = GxApi::ExperimentIdentifier.new(experiment.name)
25
+ subject.get_experiment(identifier).should eql(experiment)
25
26
  end
26
27
 
27
28
  end
@@ -4,6 +4,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
4
4
  ENV["RAILS_ENV"] ||= 'test'
5
5
  require File.expand_path("../../spec/dummy/config/environment", __FILE__)
6
6
 
7
+ require 'debugger'
8
+
7
9
  require 'gxapi'
8
10
 
9
11
  require 'rspec/rails'
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
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: 2013-11-03 00:00:00.000000000 Z
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