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.
@@ -4,6 +4,8 @@ class ABControllerMixinsTest < ActionController::TestCase
4
4
  tests TestController
5
5
 
6
6
  def setup
7
+ IWonder::AbTest.delete_all
8
+
7
9
  @controller.instance_eval do
8
10
  cookies[IWonder::COOKIE_KEY+IWonder::Logging::SESSION_KEY_NAME] = "2"
9
11
  i_wonder_for_user_id("3")
@@ -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 => "Blah Test", :sym => "blah", :test_group_names => ["Options 1", "Options 2"], :ab_test_goals_attributes => {"0" => {:event_type => "success"}}, :test_applies_to => "session")
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.6
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-28 00:00:00.000000000Z
12
+ date: 2011-10-31 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2165123980 !ruby/object:Gem::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: *2165123980
24
+ version_requirements: *2156153580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jquery-rails
27
- requirement: &2165123260 !ruby/object:Gem::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: *2165123260
35
+ version_requirements: *2156152320
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: delayed_job
38
- requirement: &2165121700 !ruby/object:Gem::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: *2165121700
46
+ version_requirements: *2156149100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hash_accessor
49
- requirement: &2165121040 !ruby/object:Gem::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: *2165121040
57
+ version_requirements: *2156147500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: factory_girl_rails
60
- requirement: &2165119980 !ruby/object:Gem::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: *2165119980
68
+ version_requirements: *2156144860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pg
71
- requirement: &2165118480 !ruby/object:Gem::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: *2165118480
79
+ version_requirements: *2156142960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: pry
82
- requirement: &2165117780 !ruby/object:Gem::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: *2165117780
90
+ version_requirements: *2156140040
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: sass
93
- requirement: &2165116720 !ruby/object:Gem::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: *2165116720
101
+ version_requirements: *2156137940
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: timecop
104
- requirement: &2165114860 !ruby/object:Gem::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: *2165114860
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