i_wonder 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/app/controllers/i_wonder/ab_tests_controller.rb +2 -0
- data/app/models/i_wonder/ab_test.rb +37 -4
- data/app/models/i_wonder/ab_test_goal.rb +4 -3
- data/app/models/i_wonder/test_group_membership.rb +2 -2
- data/app/views/i_wonder/ab_tests/_ab_test_groups.html.erb +5 -1
- data/app/views/i_wonder/ab_tests/_form.html.erb +7 -5
- data/app/views/i_wonder/ab_tests/index.html.erb +5 -3
- data/app/views/i_wonder/ab_tests/show.html.erb +9 -5
- data/db/migrate/20111022230720_i_wonder_migrations.rb +4 -4
- data/lib/i_wonder/ab_testing/action_controller_mixins.rb +1 -2
- data/lib/i_wonder/ab_testing/loader.rb +54 -0
- data/lib/i_wonder/engine.rb +6 -1
- data/lib/i_wonder/version.rb +1 -1
- data/lib/i_wonder.rb +1 -0
- data/test/dummy/db/schema.rb +5 -5
- data/test/dummy/log/development.log +917 -0
- data/test/dummy/log/test.log +31889 -0
- data/test/functional/ab_controller_mixins_test.rb +2 -0
- data/test/test_assets/i_wonder/save_test.xml +24 -0
- data/test/test_helper.rb +3 -1
- data/test/unit/i_wonder/ab_test_test.rb +1 -1
- data/test/unit/i_wonder/loader_test.rb +89 -0
- metadata +38 -22
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ab-test>
|
3
|
+
<name>Blah Test</name>
|
4
|
+
<sym>save_test</sym>
|
5
|
+
<description nil="true"></description>
|
6
|
+
<test-applies-to>session</test-applies-to>
|
7
|
+
<options>
|
8
|
+
<test-group-names type="array">
|
9
|
+
<test-group-name>Options 1</test-group-name>
|
10
|
+
<test-group-name>Options 2</test-group-name>
|
11
|
+
</test-group-names>
|
12
|
+
</options>
|
13
|
+
<test-group-data>
|
14
|
+
</test-group-data>
|
15
|
+
<ab-test-goals type="array">
|
16
|
+
<ab-test-goal type="IWonder::AbTestGoal">
|
17
|
+
<ab-test-sym>save_test</ab-test-sym>
|
18
|
+
<options>
|
19
|
+
<event-type>success</event-type>
|
20
|
+
<goal-type>Event</goal-type>
|
21
|
+
</options>
|
22
|
+
</ab-test-goal>
|
23
|
+
</ab-test-goals>
|
24
|
+
</ab-test>
|
data/test/test_helper.rb
CHANGED
@@ -13,4 +13,6 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
|
13
13
|
require "factory_girl_rails"
|
14
14
|
Dir.open(File.expand_path("factories/", File.dirname(__FILE__))).each{|file_name|
|
15
15
|
require File.expand_path("factories/#{file_name}", File.dirname(__FILE__)) if file_name =~ /.*_factory.rb/
|
16
|
-
}
|
16
|
+
}
|
17
|
+
|
18
|
+
TEST_ASSETS = File.expand_path("test_assets", File.dirname(__FILE__))
|
@@ -6,7 +6,7 @@ module IWonder
|
|
6
6
|
class AbTestTest < ActiveSupport::TestCase
|
7
7
|
|
8
8
|
test "counting results" do
|
9
|
-
@ab_test = IWonder::AbTest.create(:name => "
|
9
|
+
@ab_test = IWonder::AbTest.create(:name => "Unique Test 1", :sym => "unique_sym_1", :test_group_names => ["Options 1", "Options 2"], :ab_test_goals_attributes => {"0" => {:event_type => "success"}}, :test_applies_to => "session")
|
10
10
|
assert_valid @ab_test
|
11
11
|
ab_test_goal = @ab_test.ab_test_goals.first
|
12
12
|
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path("../../test_helper.rb", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
module IWonder
|
4
|
+
class LoaderTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
AbTest.delete_all
|
8
|
+
remove_test_xml_files
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
remove_test_xml_files
|
13
|
+
end
|
14
|
+
|
15
|
+
test "Loads Correctly" do
|
16
|
+
AbTest.delete_all
|
17
|
+
assert_equal 0, AbTest.count
|
18
|
+
|
19
|
+
`cp #{TEST_ASSETS + "/i_wonder/save_test.xml"} #{AbTesting::Loader::AB_TEST_DATA_DIR + "/save_test.xml"}`
|
20
|
+
|
21
|
+
AbTesting::Loader.load_all
|
22
|
+
assert_equal 1, AbTest.count
|
23
|
+
@ab_test = AbTest.first
|
24
|
+
|
25
|
+
assert_equal "Blah Test", @ab_test.name
|
26
|
+
assert_equal "save_test", @ab_test.sym
|
27
|
+
assert_equal "Options 1", @ab_test.test_group_names[0]
|
28
|
+
assert_equal "Options 2", @ab_test.test_group_names[1]
|
29
|
+
assert_equal "session", @ab_test.test_applies_to
|
30
|
+
assert_nil @ab_test.test_group_names[3]
|
31
|
+
assert_equal 1, @ab_test.ab_test_goals.count
|
32
|
+
end
|
33
|
+
|
34
|
+
test "Saves Correctly" do
|
35
|
+
assert !File.exists?(AbTesting::Loader.send(:file_name, "save_test"))
|
36
|
+
|
37
|
+
@ab_test = IWonder::AbTest.create(:name => "Blah Test", :sym => "save_test", :test_group_names => ["Options 1", "Options 2"], :ab_test_goals_attributes => {"0" => {:event_type => "success"}}, :test_applies_to => "session")
|
38
|
+
AbTesting::Loader.save_ab_test(@ab_test)
|
39
|
+
|
40
|
+
assert File.exists?(AbTesting::Loader.send(:file_name, "save_test"))
|
41
|
+
|
42
|
+
File.open(AbTesting::Loader.send(:file_name, "save_test")) do |test_created|
|
43
|
+
|
44
|
+
File.open(TEST_ASSETS + "/i_wonder/save_test.xml") do |known_result|
|
45
|
+
assert_equal known_result.read, test_created.read
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
test "Updates existing test" do
|
51
|
+
@ab_test = IWonder::AbTest.create(:name => "Different name", :sym => "save_test", :test_group_names => ["Options 2", "Options 3"], :ab_test_goals_attributes => {"0" => {:event_type => "fail"}}, :test_applies_to => "user")
|
52
|
+
`cp #{TEST_ASSETS + "/i_wonder/save_test.xml"} #{AbTesting::Loader::AB_TEST_DATA_DIR + "/save_test.xml"}`
|
53
|
+
|
54
|
+
AbTesting::Loader.load_all
|
55
|
+
assert_equal 1, AbTest.count
|
56
|
+
assert_equal @ab_test, AbTest.first
|
57
|
+
|
58
|
+
@ab_test.reload
|
59
|
+
assert_equal "Blah Test", @ab_test.name
|
60
|
+
assert_equal "save_test", @ab_test.sym
|
61
|
+
assert_equal "Options 1", @ab_test.test_group_names[0]
|
62
|
+
assert_equal "Options 2", @ab_test.test_group_names[1]
|
63
|
+
assert_equal "session", @ab_test.test_applies_to
|
64
|
+
assert_nil @ab_test.test_group_names[3]
|
65
|
+
assert_equal 1, @ab_test.ab_test_goals.count
|
66
|
+
end
|
67
|
+
|
68
|
+
test "Test Destruction removes files" do
|
69
|
+
assert !File.exists?(AbTesting::Loader.send(:file_name, "save_test"))
|
70
|
+
@ab_test = IWonder::AbTest.create(:name => "Blah Test", :sym => "save_test", :test_group_names => ["Options 2", "Options 3"], :ab_test_goals_attributes => {"0" => {:event_type => "fail"}}, :test_applies_to => "user")
|
71
|
+
assert File.exists?(AbTesting::Loader.send(:file_name, "save_test"))
|
72
|
+
@ab_test.destroy
|
73
|
+
assert !File.exists?(AbTesting::Loader.send(:file_name, "save_test"))
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def remove_test_xml_files
|
79
|
+
Dir.open(AbTesting::Loader::AB_TEST_DATA_DIR) do |dir|
|
80
|
+
dir.each{|file_name|
|
81
|
+
if file_name =~ /xml/
|
82
|
+
File.delete(AbTesting::Loader::AB_TEST_DATA_DIR + "/"+file_name)
|
83
|
+
end
|
84
|
+
}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i_wonder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-31 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156153580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156153580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jquery-rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156152320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156152320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: delayed_job
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156149100 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,21 +43,21 @@ dependencies:
|
|
43
43
|
version: '2.1'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156149100
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: hash_accessor
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156147500 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '1.0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156147500
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: factory_girl_rails
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156144860 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156144860
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pg
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156142960 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156142960
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: pry
|
82
|
-
requirement: &
|
82
|
+
requirement: &2156140040 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2156140040
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: sass
|
93
|
-
requirement: &
|
93
|
+
requirement: &2156137940 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,21 @@ dependencies:
|
|
98
98
|
version: '3.1'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2156137940
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: timecop
|
104
|
-
requirement: &
|
104
|
+
requirement: &2156135540 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *2156135540
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: mocha
|
115
|
+
requirement: &2156093640 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,7 +120,7 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *2156093640
|
113
124
|
description: Analytics and AB Testing awesomeness for rails.
|
114
125
|
email:
|
115
126
|
- development@forrestzeisler.com
|
@@ -184,6 +195,7 @@ files:
|
|
184
195
|
- config/routes.rb
|
185
196
|
- db/migrate/20111022230720_i_wonder_migrations.rb
|
186
197
|
- lib/i_wonder/ab_testing/action_controller_mixins.rb
|
198
|
+
- lib/i_wonder/ab_testing/loader.rb
|
187
199
|
- lib/i_wonder/configuration.rb
|
188
200
|
- lib/i_wonder/core_ext.rb
|
189
201
|
- lib/i_wonder/engine.rb
|
@@ -292,6 +304,7 @@ files:
|
|
292
304
|
- test/integration/middleware_test.rb
|
293
305
|
- test/integration/navigation_test.rb
|
294
306
|
- test/support/extra_assertions.rb
|
307
|
+
- test/test_assets/i_wonder/save_test.xml
|
295
308
|
- test/test_helper.rb
|
296
309
|
- test/unit/configuration_test.rb
|
297
310
|
- test/unit/helpers/i_wonder/ab_tests_helper_test.rb
|
@@ -301,6 +314,7 @@ files:
|
|
301
314
|
- test/unit/helpers/i_wonder/reports_helper_test.rb
|
302
315
|
- test/unit/i_wonder/ab_test_test.rb
|
303
316
|
- test/unit/i_wonder/event_test.rb
|
317
|
+
- test/unit/i_wonder/loader_test.rb
|
304
318
|
- test/unit/i_wonder/metric_collection_test.rb
|
305
319
|
- test/unit/i_wonder/metric_creation_test.rb
|
306
320
|
- test/unit/i_wonder/report_test.rb
|
@@ -427,6 +441,7 @@ test_files:
|
|
427
441
|
- test/integration/middleware_test.rb
|
428
442
|
- test/integration/navigation_test.rb
|
429
443
|
- test/support/extra_assertions.rb
|
444
|
+
- test/test_assets/i_wonder/save_test.xml
|
430
445
|
- test/test_helper.rb
|
431
446
|
- test/unit/configuration_test.rb
|
432
447
|
- test/unit/helpers/i_wonder/ab_tests_helper_test.rb
|
@@ -436,6 +451,7 @@ test_files:
|
|
436
451
|
- test/unit/helpers/i_wonder/reports_helper_test.rb
|
437
452
|
- test/unit/i_wonder/ab_test_test.rb
|
438
453
|
- test/unit/i_wonder/event_test.rb
|
454
|
+
- test/unit/i_wonder/loader_test.rb
|
439
455
|
- test/unit/i_wonder/metric_collection_test.rb
|
440
456
|
- test/unit/i_wonder/metric_creation_test.rb
|
441
457
|
- test/unit/i_wonder/report_test.rb
|