vanity 3.0.2 → 4.0.1

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/linting.yml +28 -0
  3. data/.github/workflows/test.yml +3 -6
  4. data/.rubocop.yml +114 -0
  5. data/.rubocop_todo.yml +67 -0
  6. data/Appraisals +9 -31
  7. data/CHANGELOG +13 -0
  8. data/Gemfile +7 -3
  9. data/Gemfile.lock +32 -4
  10. data/README.md +4 -9
  11. data/Rakefile +25 -24
  12. data/bin/vanity +1 -1
  13. data/doc/configuring.textile +1 -0
  14. data/gemfiles/rails52.gemfile +6 -3
  15. data/gemfiles/rails52.gemfile.lock +34 -9
  16. data/gemfiles/rails60.gemfile +6 -3
  17. data/gemfiles/rails60.gemfile.lock +34 -9
  18. data/gemfiles/rails61.gemfile +6 -3
  19. data/gemfiles/rails61.gemfile.lock +34 -9
  20. data/lib/generators/vanity/migration_generator.rb +5 -7
  21. data/lib/vanity/adapters/abstract_adapter.rb +43 -45
  22. data/lib/vanity/adapters/active_record_adapter.rb +30 -30
  23. data/lib/vanity/adapters/mock_adapter.rb +14 -18
  24. data/lib/vanity/adapters/mongodb_adapter.rb +73 -69
  25. data/lib/vanity/adapters/redis_adapter.rb +19 -27
  26. data/lib/vanity/adapters.rb +1 -1
  27. data/lib/vanity/autoconnect.rb +6 -7
  28. data/lib/vanity/commands/list.rb +7 -7
  29. data/lib/vanity/commands/report.rb +18 -22
  30. data/lib/vanity/configuration.rb +23 -19
  31. data/lib/vanity/connection.rb +12 -14
  32. data/lib/vanity/experiment/ab_test.rb +95 -79
  33. data/lib/vanity/experiment/alternative.rb +3 -5
  34. data/lib/vanity/experiment/base.rb +24 -19
  35. data/lib/vanity/experiment/bayesian_bandit_score.rb +7 -13
  36. data/lib/vanity/experiment/definition.rb +6 -6
  37. data/lib/vanity/frameworks/rails.rb +39 -39
  38. data/lib/vanity/frameworks.rb +2 -2
  39. data/lib/vanity/helpers.rb +1 -1
  40. data/lib/vanity/metric/active_record.rb +21 -19
  41. data/lib/vanity/metric/base.rb +22 -23
  42. data/lib/vanity/metric/google_analytics.rb +6 -9
  43. data/lib/vanity/metric/remote.rb +3 -5
  44. data/lib/vanity/playground.rb +3 -6
  45. data/lib/vanity/vanity.rb +8 -12
  46. data/lib/vanity/version.rb +1 -1
  47. data/test/adapters/active_record_adapter_test.rb +1 -5
  48. data/test/adapters/mock_adapter_test.rb +0 -2
  49. data/test/adapters/mongodb_adapter_test.rb +1 -5
  50. data/test/adapters/redis_adapter_test.rb +2 -3
  51. data/test/adapters/shared_tests.rb +9 -12
  52. data/test/autoconnect_test.rb +3 -3
  53. data/test/cli_test.rb +0 -1
  54. data/test/configuration_test.rb +18 -34
  55. data/test/connection_test.rb +3 -3
  56. data/test/dummy/Rakefile +1 -1
  57. data/test/dummy/app/controllers/use_vanity_controller.rb +12 -8
  58. data/test/dummy/app/mailers/vanity_mailer.rb +3 -3
  59. data/test/dummy/config/application.rb +1 -1
  60. data/test/dummy/config/boot.rb +3 -3
  61. data/test/dummy/config/environment.rb +1 -1
  62. data/test/dummy/config/environments/development.rb +0 -1
  63. data/test/dummy/config/environments/test.rb +1 -1
  64. data/test/dummy/config/initializers/session_store.rb +1 -1
  65. data/test/dummy/config/initializers/vanity.rb +3 -0
  66. data/test/dummy/config/vanity.yml +7 -0
  67. data/test/dummy/config.ru +1 -1
  68. data/test/dummy/script/rails +2 -2
  69. data/test/experiment/ab_test.rb +188 -154
  70. data/test/experiment/base_test.rb +48 -32
  71. data/test/frameworks/rails/action_controller_test.rb +25 -25
  72. data/test/frameworks/rails/action_mailer_test.rb +2 -2
  73. data/test/frameworks/rails/action_view_test.rb +5 -6
  74. data/test/frameworks/rails/rails_test.rb +147 -181
  75. data/test/helper_test.rb +2 -2
  76. data/test/metric/active_record_test.rb +174 -212
  77. data/test/metric/base_test.rb +21 -46
  78. data/test/metric/google_analytics_test.rb +17 -25
  79. data/test/metric/remote_test.rb +7 -10
  80. data/test/playground_test.rb +7 -15
  81. data/test/templates_test.rb +16 -20
  82. data/test/test_helper.rb +28 -29
  83. data/test/vanity_test.rb +4 -10
  84. data/test/web/rails/dashboard_test.rb +21 -21
  85. data/vanity.gemspec +8 -7
  86. metadata +32 -30
  87. data/gemfiles/rails42.gemfile +0 -33
  88. data/gemfiles/rails42.gemfile.lock +0 -265
  89. data/gemfiles/rails42_protected_attributes.gemfile +0 -34
  90. data/gemfiles/rails42_protected_attributes.gemfile.lock +0 -264
  91. data/gemfiles/rails51.gemfile +0 -33
  92. data/gemfiles/rails51.gemfile.lock +0 -285
@@ -5,233 +5,209 @@ class User < ActiveRecord::Base
5
5
 
6
6
  attr_accessible :height if defined?(ProtectedAttributes)
7
7
  end
8
+
8
9
  class Sky < ActiveRecord::Base
9
10
  belongs_to :user
10
- scope :high, lambda { where("height >= 4") }
11
+ scope :high, -> { where("height >= 4") }
11
12
 
12
13
  attr_accessible :height if defined?(ProtectedAttributes)
13
14
  end
14
15
 
15
16
  if ENV["DB"] == "active_record"
16
17
 
17
- describe Vanity::Metric::ActiveRecord do
18
-
19
- before do
20
- User.connection.create_table(:users) do |t|
21
- t.timestamps
22
- end
23
- Sky.connection.create_table(:skies) do |t|
24
- t.integer :user_id
25
- t.integer :height
26
- t.timestamps
18
+ describe Vanity::Metric::ActiveRecord do
19
+ before do
20
+ User.connection.create_table(:users) do |t|
21
+ t.timestamps
22
+ end
23
+ Sky.connection.create_table(:skies) do |t|
24
+ t.integer :user_id
25
+ t.integer :height
26
+ t.timestamps
27
+ end
27
28
  end
28
- end
29
29
 
30
- after do
31
- User.connection.drop_table(:users) if User.connection.table_exists?(User.table_name)
32
- User.reset_callbacks(:create)
33
- User.reset_callbacks(:save)
34
- Sky.connection.drop_table(:skies) if Sky.connection.table_exists?(Sky.table_name)
35
- Sky.reset_callbacks(:create)
36
- Sky.reset_callbacks(:save)
37
- end
30
+ after do
31
+ User.connection.drop_table(:users) if User.connection.table_exists?(User.table_name)
32
+ User.reset_callbacks(:create)
33
+ User.reset_callbacks(:save)
34
+ Sky.connection.drop_table(:skies) if Sky.connection.table_exists?(Sky.table_name)
35
+ Sky.reset_callbacks(:create)
36
+ Sky.reset_callbacks(:save)
37
+ end
38
38
 
39
- it "record count" do
40
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
41
- f.write <<-RUBY
39
+ it "record count" do
40
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
42
41
  metric "Sky is limit" do
43
42
  model Sky
44
43
  end
45
44
  RUBY
45
+ Vanity.playground.metrics
46
+ Sky.create!
47
+ assert_equal 1, Sky.count
48
+ assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
46
49
  end
47
- Vanity.playground.metrics
48
- Sky.create!
49
- assert_equal 1, Sky.count
50
- assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
51
- end
52
50
 
53
- it "record sum" do
54
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
55
- f.write <<-RUBY
51
+ it "record sum" do
52
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
56
53
  metric "Sky is limit" do
57
54
  model Sky, :sum=>:height
58
55
  end
59
56
  RUBY
57
+ Vanity.playground.metrics
58
+ Sky.create! height: 4
59
+ Sky.create! height: 2
60
+ assert_equal 6, Vanity::Metric.data(metric(:sky_is_limit)).last.last
60
61
  end
61
- Vanity.playground.metrics
62
- Sky.create! :height=>4
63
- Sky.create! :height=>2
64
- assert_equal 6, Vanity::Metric.data(metric(:sky_is_limit)).last.last
65
- end
66
62
 
67
- it "record average" do
68
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
69
- f.write <<-RUBY
63
+ it "record average" do
64
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
70
65
  metric "Sky is limit" do
71
66
  model Sky, :average=>:height
72
67
  end
73
68
  RUBY
69
+ Vanity.playground.metrics
70
+ Sky.create! height: 8
71
+ Sky.create! height: 2
72
+ assert_equal 5, Vanity::Metric.data(metric(:sky_is_limit)).last.last
74
73
  end
75
- Vanity.playground.metrics
76
- Sky.create! :height=>8
77
- Sky.create! :height=>2
78
- assert_equal 5, Vanity::Metric.data(metric(:sky_is_limit)).last.last
79
- end
80
74
 
81
- it "record minimum" do
82
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
83
- f.write <<-RUBY
75
+ it "record minimum" do
76
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
84
77
  metric "Sky is limit" do
85
78
  model Sky, :minimum=>:height
86
79
  end
87
80
  RUBY
81
+ Vanity.playground.metrics
82
+ Sky.create! height: 4
83
+ Sky.create! height: 2
84
+ assert_equal 2, Vanity::Metric.data(metric(:sky_is_limit)).last.last
88
85
  end
89
- Vanity.playground.metrics
90
- Sky.create! :height=>4
91
- Sky.create! :height=>2
92
- assert_equal 2, Vanity::Metric.data(metric(:sky_is_limit)).last.last
93
- end
94
86
 
95
- it "record maximum" do
96
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
97
- f.write <<-RUBY
87
+ it "record maximum" do
88
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
98
89
  metric "Sky is limit" do
99
90
  model Sky, :maximum=>:height
100
91
  end
101
92
  RUBY
93
+ Vanity.playground.metrics
94
+ Sky.create! height: 4
95
+ Sky.create! height: 2
96
+ assert_equal 4, Vanity::Metric.data(metric(:sky_is_limit)).last.last
102
97
  end
103
- Vanity.playground.metrics
104
- Sky.create! :height=>4
105
- Sky.create! :height=>2
106
- assert_equal 4, Vanity::Metric.data(metric(:sky_is_limit)).last.last
107
- end
108
98
 
109
- it "with conditions" do
110
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
111
- f.write <<-RUBY
99
+ it "with conditions" do
100
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
112
101
  metric "Sky is limit" do
113
102
  model Sky, :sum=>:height, :conditions=>["height > 4"]
114
103
  end
115
104
  RUBY
105
+ Vanity.playground.metrics
106
+ high_skies = 0
107
+ metric(:sky_is_limit).hook do |_metric_id, _timestamp, height|
108
+ assert height > 4
109
+ high_skies += height
110
+ end
111
+ [nil, 5, 3, 6].each do |height|
112
+ Sky.create! height: height
113
+ end
114
+ assert_equal 11, Vanity::Metric.data(metric(:sky_is_limit)).sum(&:last)
115
+ assert_equal 11, high_skies
116
116
  end
117
- Vanity.playground.metrics
118
- high_skies = 0
119
- metric(:sky_is_limit).hook do |metric_id, timestamp, height|
120
- assert height > 4
121
- high_skies += height
122
- end
123
- [nil,5,3,6].each do |height|
124
- Sky.create! :height=>height
125
- end
126
- assert_equal 11, Vanity::Metric.data(metric(:sky_is_limit)).sum(&:last)
127
- assert_equal 11, high_skies
128
- end
129
117
 
130
- it "with scope" do
131
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
132
- f.write <<-RUBY
118
+ it "with scope" do
119
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
133
120
  metric "Sky is limit" do
134
121
  model Sky.high
135
122
  end
136
123
  RUBY
124
+ Vanity.playground.metrics
125
+ total = 0
126
+ metric(:sky_is_limit).hook do |_metric_id, _timestamp, count|
127
+ total += count
128
+ end
129
+ Sky.create! height: 4
130
+ Sky.create! height: 2
131
+ assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
132
+ assert_equal 1, total
137
133
  end
138
- Vanity.playground.metrics
139
- total = 0
140
- metric(:sky_is_limit).hook do |metric_id, timestamp, count|
141
- total += count
142
- end
143
- Sky.create! :height=>4
144
- Sky.create! :height=>2
145
- assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
146
- assert_equal 1, total
147
- end
148
134
 
149
- it "with timestamp" do
150
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
151
- f.write <<-RUBY
135
+ it "with timestamp" do
136
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
152
137
  metric "Sky is limit" do
153
138
  model Sky, :timestamp => :created_at
154
139
  end
155
140
  RUBY
141
+ Vanity.playground.metrics
142
+ Sky.create!
143
+ assert_equal 1, Sky.count
144
+ assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
156
145
  end
157
- Vanity.playground.metrics
158
- Sky.create!
159
- assert_equal 1, Sky.count
160
- assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
161
- end
162
146
 
163
- it "with timestamp and table" do
164
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
165
- f.write <<-RUBY
147
+ it "with timestamp and table" do
148
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
166
149
  metric "Sky is limit" do
167
150
  model Sky, :timestamp => 'skies.created_at'
168
151
  end
169
152
  RUBY
153
+ Vanity.playground.metrics
154
+ Sky.create!
155
+ assert_equal 1, Sky.count
156
+ assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
170
157
  end
171
- Vanity.playground.metrics
172
- Sky.create!
173
- assert_equal 1, Sky.count
174
- assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
175
- end
176
158
 
177
- it "hooks" do
178
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
179
- f.write <<-RUBY
159
+ it "hooks" do
160
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
180
161
  metric "Sky is limit" do
181
162
  model Sky, :sum=>:height
182
163
  end
183
164
  RUBY
165
+ Vanity.playground.metrics
166
+ total = 0
167
+ metric(:sky_is_limit).hook do |metric_id, timestamp, count|
168
+ assert_equal :sky_is_limit, metric_id
169
+ assert_in_delta Time.now.to_i, timestamp.to_i, 1
170
+ total += count
171
+ end
172
+ Sky.create! height: 4
173
+ assert_equal 4, total
184
174
  end
185
- Vanity.playground.metrics
186
- total = 0
187
- metric(:sky_is_limit).hook do |metric_id, timestamp, count|
188
- assert_equal :sky_is_limit, metric_id
189
- assert_in_delta Time.now.to_i, timestamp.to_i, 1
190
- total += count
191
- end
192
- Sky.create! :height=>4
193
- assert_equal 4, total
194
- end
195
175
 
196
- it "no hooks when metrics disabled" do
197
- not_collecting!
198
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
199
- f.write <<-RUBY
176
+ it "no hooks when metrics disabled" do
177
+ not_collecting!
178
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
200
179
  metric "Sky is limit" do
201
180
  model Sky, :sum=>:height
202
181
  end
203
182
  RUBY
183
+ Vanity.playground.metrics
184
+ total = 0
185
+ metric(:sky_is_limit).hook do |_metric_id, _timestamp, count|
186
+ total += count
187
+ end
188
+ Sky.create! height: 4
189
+ assert_equal 0, total
204
190
  end
205
- Vanity.playground.metrics
206
- total = 0
207
- metric(:sky_is_limit).hook do |metric_id, timestamp, count|
208
- total += count
209
- end
210
- Sky.create! :height=>4
211
- assert_equal 0, total
212
- end
213
191
 
214
- it "after_create not after_save" do
215
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
216
- f.write <<-RUBY
192
+ it "after_create not after_save" do
193
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
217
194
  metric "Sky is limit" do
218
195
  model Sky
219
196
  end
220
197
  RUBY
198
+ Vanity.playground.metrics
199
+ once = nil
200
+ metric(:sky_is_limit).hook do
201
+ raise "Metric tracked twice" if once
202
+
203
+ once = true
204
+ end
205
+ Sky.create!
206
+ Sky.last.update_attributes height: 4
221
207
  end
222
- Vanity.playground.metrics
223
- once = nil
224
- metric(:sky_is_limit).hook do
225
- fail "Metric tracked twice" if once
226
- once = true
227
- end
228
- Sky.create!
229
- Sky.last.update_attributes :height=>4
230
- end
231
208
 
232
- it "with after_save" do
233
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
234
- f.write <<-RUBY
209
+ it "with after_save" do
210
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
235
211
  metric "Sky is limit" do
236
212
  model Sky, :conditions=>["height > 3"]
237
213
  Sky.after_save do |sky|
@@ -243,116 +219,102 @@ describe Vanity::Metric::ActiveRecord do
243
219
  end
244
220
  end
245
221
  RUBY
222
+ Vanity.playground.metrics
223
+ times = 0
224
+ metric(:sky_is_limit).hook do
225
+ times += 1
226
+ end
227
+ Sky.create!
228
+ (1..5).each do |height|
229
+ Sky.last.update_attributes! height: height
230
+ end
231
+ assert_equal 2, times
246
232
  end
247
- Vanity.playground.metrics
248
- times = 0
249
- metric(:sky_is_limit).hook do
250
- times += 1
251
- end
252
- Sky.create!
253
- (1..5).each do |height|
254
- Sky.last.update_attributes! :height=>height
255
- end
256
- assert_equal 2, times
257
- end
258
233
 
259
- it "with model identity" do
260
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
261
- f.write <<-RUBY
234
+ it "with model identity" do
235
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
262
236
  metric "Sky is limit" do
263
237
  model Sky, :identity => lambda { |record| record.user_id }
264
238
  end
265
239
  RUBY
266
- end
267
240
 
268
- File.open "tmp/experiments/simple.rb", "w" do |f|
269
- f.write <<-RUBY
241
+ File.write("tmp/experiments/simple.rb", <<-RUBY)
270
242
  ab_test "simple" do
271
243
  metrics :sky_is_limit
272
244
  alternatives :a, :b
273
245
  identity { "me" }
274
246
  end
275
247
  RUBY
276
- end
277
248
 
278
- user = User.create
279
- Vanity.context = stub(vanity_identity: user.id)
280
- experiment = Vanity.playground.experiment(:simple)
281
- experiment.choose
249
+ user = User.create
250
+ Vanity.context = stub(vanity_identity: user.id)
251
+ experiment = Vanity.playground.experiment(:simple)
252
+ experiment.choose
282
253
 
283
- Vanity.context = nil
284
- # Should count as a conversion for the user in the experiment.
285
- user.skies.create
254
+ Vanity.context = nil
255
+ # Should count as a conversion for the user in the experiment.
256
+ user.skies.create
286
257
 
287
- # Should count as a conversion for the newly created User.
288
- User.create.skies.create
258
+ # Should count as a conversion for the newly created User.
259
+ User.create.skies.create
289
260
 
290
- Vanity.context = stub(vanity_identity: "other")
291
- experiment.choose
292
- # Should count as a conversion for "other"
293
- Sky.create
261
+ Vanity.context = stub(vanity_identity: "other")
262
+ experiment.choose
263
+ # Should count as a conversion for "other"
264
+ Sky.create
294
265
 
295
- assert_equal 3, Sky.count
296
- assert_equal 2, experiment.alternatives.map(&:participants).sum
297
- assert_equal 3, experiment.alternatives.map(&:conversions).sum
298
- end
266
+ assert_equal 3, Sky.count
267
+ assert_equal 2, experiment.alternatives.map(&:participants).sum
268
+ assert_equal 3, experiment.alternatives.map(&:conversions).sum
269
+ end
299
270
 
300
- it "do it yourself" do
301
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
302
- f.write <<-RUBY
271
+ it "do it yourself" do
272
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
303
273
  metric "Sky is limit" do
304
274
  Sky.after_save { |sky| Vanity.track!(:sky_is_limit) if sky.height && sky.height > 3 }
305
275
  end
306
276
  RUBY
277
+ Vanity.playground.metrics
278
+ Sky.create!
279
+ (1..5).each do |height|
280
+ Sky.create! height: height
281
+ end
282
+ Sky.first.update_attributes! height: 4
283
+ assert_equal 3, Vanity::Metric.data(metric(:sky_is_limit)).last.last
307
284
  end
308
- Vanity.playground.metrics
309
- Sky.create!
310
- (1..5).each do |height|
311
- Sky.create! :height=>height
312
- end
313
- Sky.first.update_attributes! :height=>4
314
- assert_equal 3, Vanity::Metric.data(metric(:sky_is_limit)).last.last
315
- end
316
285
 
317
- it "last update for new metric" do
318
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
319
- f.write <<-RUBY
286
+ it "last update for new metric" do
287
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
320
288
  metric "Sky is limit" do
321
289
  model Sky
322
290
  end
323
291
  RUBY
292
+ assert_nil metric(:sky_is_limit).last_update_at
324
293
  end
325
- assert_nil metric(:sky_is_limit).last_update_at
326
- end
327
294
 
328
- it "last update with records" do
329
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
330
- f.write <<-RUBY
295
+ it "last update with records" do
296
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
331
297
  metric "Sky is limit" do
332
298
  model Sky
333
299
  end
334
300
  RUBY
301
+ Sky.create! height: 1
302
+ Timecop.freeze Time.now + 1.day do
303
+ Sky.create! height: 1
304
+ end
305
+ assert_in_delta metric(:sky_is_limit).last_update_at.to_i, (Time.now + 1.day).to_i, 1
335
306
  end
336
- Sky.create! :height=>1
337
- Timecop.freeze Time.now + 1.day do
338
- Sky.create! :height=>1
339
- end
340
- assert_in_delta metric(:sky_is_limit).last_update_at.to_i, (Time.now + 1.day).to_i, 1
341
- end
342
307
 
343
- it "metric is specifiable with a string" do
344
- File.open "tmp/experiments/metrics/sky_is_limit.rb", "w" do |f|
345
- f.write <<-RUBY
308
+ it "metric is specifiable with a string" do
309
+ File.write("tmp/experiments/metrics/sky_is_limit.rb", <<-RUBY)
346
310
  metric "Sky is limit" do
347
311
  model 'Sky'
348
312
  end
349
313
  RUBY
314
+ Vanity.playground.metrics
315
+ Sky.create!
316
+ assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
350
317
  end
351
- Vanity.playground.metrics
352
- Sky.create!
353
- assert_equal 1, Vanity::Metric.data(metric(:sky_is_limit)).last.last
354
318
  end
355
319
 
356
320
  end
357
-
358
- end