rspec_candy 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -0
- data/README.md +7 -0
- data/Rakefile +18 -0
- data/lib/rspec_candy/helpers/disposable_copy.rb +16 -0
- data/lib/rspec_candy/helpers/it_should_act_like.rb +39 -0
- data/lib/rspec_candy/helpers/new_with_stubs.rb +16 -0
- data/lib/rspec_candy/helpers/rails/create_without_callbacks.rb +25 -0
- data/lib/rspec_candy/helpers/rails/it_should_run_callbacks.rb +111 -0
- data/lib/rspec_candy/helpers/rails/prevent_storage.rb +20 -0
- data/lib/rspec_candy/helpers/should_receive_and_execute.rb +38 -0
- data/lib/rspec_candy/helpers/should_receive_and_return.rb +17 -0
- data/lib/rspec_candy/helpers/should_receive_chain.rb +43 -0
- data/lib/rspec_candy/helpers/stub_any_instance.rb +25 -0
- data/lib/rspec_candy/helpers/stub_existing.rb +20 -0
- data/lib/rspec_candy/switcher.rb +44 -0
- data/lib/rspec_candy/version.rb +3 -0
- data/lib/rspec_candy.rb +16 -0
- data/rspec_candy.gemspec +19 -0
- data/spec/rspec1/Gemfile +13 -0
- data/spec/rspec1/Rakefile +11 -0
- data/spec/rspec1/app_root/config/boot.rb +114 -0
- data/spec/rspec1/app_root/config/database.yml +21 -0
- data/spec/rspec1/app_root/config/environment.rb +14 -0
- data/spec/rspec1/app_root/config/environments/in_memory.rb +0 -0
- data/spec/rspec1/app_root/config/environments/mysql.rb +0 -0
- data/spec/rspec1/app_root/config/environments/postgresql.rb +0 -0
- data/spec/rspec1/app_root/config/environments/sqlite.rb +0 -0
- data/spec/rspec1/app_root/config/environments/sqlite3.rb +0 -0
- data/spec/rspec1/app_root/config/initializers/state_machine.rb +1 -0
- data/spec/rspec1/app_root/config/routes.rb +4 -0
- data/spec/rspec1/app_root/log/.gitignore +1 -0
- data/spec/rspec1/rcov.opts +2 -0
- data/spec/rspec1/spec.opts +4 -0
- data/spec/rspec1/spec_helper.rb +24 -0
- data/spec/rspec2/.rspec +2 -0
- data/spec/rspec2/Gemfile +13 -0
- data/spec/rspec2/Rakefile +11 -0
- data/spec/rspec2/app_root/.gitignore +4 -0
- data/spec/rspec2/app_root/config/application.rb +32 -0
- data/spec/rspec2/app_root/config/boot.rb +13 -0
- data/spec/rspec2/app_root/config/database.yml +21 -0
- data/spec/rspec2/app_root/config/environment.rb +5 -0
- data/spec/rspec2/app_root/config/environments/in_memory.rb +0 -0
- data/spec/rspec2/app_root/config/environments/mysql.rb +0 -0
- data/spec/rspec2/app_root/config/environments/postgresql.rb +0 -0
- data/spec/rspec2/app_root/config/environments/sqlite.rb +0 -0
- data/spec/rspec2/app_root/config/environments/sqlite3.rb +0 -0
- data/spec/rspec2/app_root/config/environments/test.rb +35 -0
- data/spec/rspec2/app_root/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/rspec2/app_root/config/initializers/inflections.rb +10 -0
- data/spec/rspec2/app_root/config/initializers/mime_types.rb +5 -0
- data/spec/rspec2/app_root/config/initializers/secret_token.rb +7 -0
- data/spec/rspec2/app_root/config/initializers/session_store.rb +8 -0
- data/spec/rspec2/app_root/config/initializers/state_machine.rb +1 -0
- data/spec/rspec2/app_root/config/locales/en.yml +5 -0
- data/spec/rspec2/app_root/config/routes.rb +58 -0
- data/spec/rspec2/app_root/log/.gitkeep +0 -0
- data/spec/rspec2/rcov.opts +2 -0
- data/spec/rspec2/spec_helper.rb +25 -0
- data/spec/shared/app_root/app/controllers/application_controller.rb +2 -0
- data/spec/shared/app_root/app/models/model.rb +19 -0
- data/spec/shared/app_root/app/models/state_machine_model.rb +30 -0
- data/spec/shared/app_root/config/initializers/state_machine.rb +1 -0
- data/spec/shared/app_root/db/migrate/001_create_model.rb +13 -0
- data/spec/shared/app_root/db/migrate/002_create_state_machine_model.rb +13 -0
- data/spec/shared/rspec_candy/helpers/disposable_copy_spec.rb +45 -0
- data/spec/shared/rspec_candy/helpers/it_should_act_like_spec.rb +139 -0
- data/spec/shared/rspec_candy/helpers/new_with_stubs_spec.rb +41 -0
- data/spec/shared/rspec_candy/helpers/rails/create_without_callbacks_spec.rb +41 -0
- data/spec/shared/rspec_candy/helpers/rails/it_should_run_callbacks_spec.rb +142 -0
- data/spec/shared/rspec_candy/helpers/rails/prevent_storage_spec.rb +85 -0
- data/spec/shared/rspec_candy/helpers/should_receive_and_execute_spec.rb +32 -0
- data/spec/shared/rspec_candy/helpers/should_receive_and_return_spec.rb +30 -0
- data/spec/shared/rspec_candy/helpers/should_receive_chain_spec.rb +99 -0
- data/spec/shared/rspec_candy/helpers/stub_any_instance_spec.rb +32 -0
- data/spec/shared/rspec_candy/helpers/stub_existing_spec.rb +27 -0
- data/spec/shared/support/matchers/pass_as_describe_block.rb +32 -0
- data/spec/shared/support/matchers/pass_as_example.rb +30 -0
- data/template/spec_candy.rails2.rb +171 -0
- data/template/spec_candy.rails3.rb +175 -0
- metadata +159 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::Rails::CreateWithoutCallbacks do
|
4
|
+
|
5
|
+
describe ActiveRecord::Base do
|
6
|
+
|
7
|
+
describe '.create_without_callbacks' do
|
8
|
+
|
9
|
+
it 'should create a record without running callbacks or validations' do
|
10
|
+
model = Model.disposable_copy do
|
11
|
+
before_save :crash
|
12
|
+
validate :crash
|
13
|
+
def crash
|
14
|
+
raise 'callback was run'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
record = nil
|
18
|
+
expect do
|
19
|
+
record = model.create_without_callbacks(:string_field => 'foo')
|
20
|
+
end.to_not raise_error
|
21
|
+
record.string_field.should == 'foo'
|
22
|
+
record.should be_a(Model)
|
23
|
+
record.id.should be_a(Fixnum)
|
24
|
+
record.should_not be_new_record
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.new_and_store' do
|
30
|
+
|
31
|
+
it 'should print a deprecation warning urging to use .create_without_callbacks instead' do
|
32
|
+
Model.should_receive(:warn).with(/Use create_without_callbacks instead/i)
|
33
|
+
Model.should_receive(:create_without_callbacks).with('args')
|
34
|
+
Model.new_and_store('args')
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::Rails::ItShouldRunCallbacks do
|
4
|
+
|
5
|
+
describe '#it_should_run_callbacks' do
|
6
|
+
|
7
|
+
context 'for an app without state_machine' do
|
8
|
+
|
9
|
+
it 'should pass if all callbacks have been run' do
|
10
|
+
<<-describe_block.should pass_as_describe_block
|
11
|
+
describe Model, '#after_save' do
|
12
|
+
it_should_run_callbacks :after_save_callback2, :after_save_callback1
|
13
|
+
end
|
14
|
+
describe_block
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should only attempt to run the proper callbacks have been run' do
|
18
|
+
<<-describe_block.should fail_as_describe_block
|
19
|
+
describe Model, '#before_save' do
|
20
|
+
it_should_run_callbacks :after_save_callback2, :after_save_callback1
|
21
|
+
end
|
22
|
+
describe_block
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should not pass if a callback has not been run' do
|
26
|
+
<<-describe_block.should fail_as_describe_block
|
27
|
+
describe Model, '#after_create' do
|
28
|
+
it_should_run_callbacks :after_create_callback, :unknown_callback
|
29
|
+
end
|
30
|
+
describe_block
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should not actually execute the callbacks' do
|
34
|
+
<<-describe_block.should pass_as_describe_block
|
35
|
+
def Model.after_save_callback2
|
36
|
+
raise "called!"
|
37
|
+
end
|
38
|
+
|
39
|
+
describe Model, '#after_save' do
|
40
|
+
it_should_run_callbacks :after_save_callback1
|
41
|
+
end
|
42
|
+
describe_block
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should not parse state_machine callbacks being present' do
|
46
|
+
<<-describe_block.should fail_as_describe_block
|
47
|
+
describe StateMachineModel, '#event from :state1 to :state2' do
|
48
|
+
it_should_run_callbacks :event_callback
|
49
|
+
end
|
50
|
+
describe_block
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'for an app with state_machine' do
|
56
|
+
|
57
|
+
before do
|
58
|
+
ENV['REQUIRE_STATE_MACHINE'] = 'true'
|
59
|
+
end
|
60
|
+
|
61
|
+
after do
|
62
|
+
ENV['REQUIRE_STATE_MACHINE'] = 'false'
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should pass if all callbacks have been run' do
|
66
|
+
<<-describe_block.should pass_as_describe_block
|
67
|
+
describe Model, '#after_save' do
|
68
|
+
it_should_run_callbacks :after_save_callback2, :after_save_callback1
|
69
|
+
end
|
70
|
+
describe_block
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should not pass if a callback has not been run' do
|
74
|
+
<<-describe_block.should fail_as_describe_block
|
75
|
+
describe Model, '#after_create' do
|
76
|
+
it_should_run_callbacks :after_create_callback, :unknown_callback
|
77
|
+
end
|
78
|
+
describe_block
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
it 'should also run state machine callbacks and pass if they are called if StateMachine is present' do
|
83
|
+
<<-describe_block.should pass_as_describe_block
|
84
|
+
describe StateMachineModel, '#event from :state1 to :state2' do
|
85
|
+
it_should_run_callbacks :event_callback
|
86
|
+
end
|
87
|
+
describe_block
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should also run state machine callbacks and fail if they are not called if StateMachine is present' do
|
91
|
+
<<-describe_block.should fail_as_describe_block
|
92
|
+
describe StateMachineModel, '#event from :state1 to :state3' do
|
93
|
+
it_should_run_callbacks :event_callback
|
94
|
+
end
|
95
|
+
describe_block
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
describe '#it_should_run_callbacks_in_order' do
|
104
|
+
|
105
|
+
supported_callbacks = case RSpecCandy::Switcher.rspec_version
|
106
|
+
when :rspec1
|
107
|
+
%w[before after]
|
108
|
+
when :rspec2
|
109
|
+
%w[before after around]
|
110
|
+
end
|
111
|
+
|
112
|
+
supported_callbacks.each do |kind|
|
113
|
+
|
114
|
+
it "should pass if all #{kind} callbacks are run in order" do
|
115
|
+
<<-describe_block.should pass_as_describe_block
|
116
|
+
describe Model, '##{kind}_save' do
|
117
|
+
it_should_run_callbacks_in_order :#{kind}_save_callback1, :#{kind}_save_callback2
|
118
|
+
end
|
119
|
+
describe_block
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should not pass if a #{kind} callback has not been run" do
|
123
|
+
<<-describe_block.should fail_as_describe_block
|
124
|
+
describe Model, '##{kind}_create' do
|
125
|
+
it_should_run_callbacks_in_order :#{kind}_create_callback, :unknown_callback
|
126
|
+
end
|
127
|
+
describe_block
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should not pass if #{kind} callbacks are run out of order" do
|
131
|
+
<<-describe_block.should fail_as_describe_block
|
132
|
+
describe Model, '##{kind}_save' do
|
133
|
+
it_should_run_callbacks_in_order :#{kind}_save_callback2, :#{kind}_save_callback1
|
134
|
+
end
|
135
|
+
describe_block
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::Rails::PreventStorage do
|
4
|
+
|
5
|
+
describe ActiveRecord::Base do
|
6
|
+
|
7
|
+
describe '#prevent_storage' do
|
8
|
+
|
9
|
+
context 'when attempting to save the record afterwards' do
|
10
|
+
|
11
|
+
it 'should run validations' do
|
12
|
+
klass = Model.disposable_copy do
|
13
|
+
validate :validation_method
|
14
|
+
end
|
15
|
+
record = klass.new
|
16
|
+
record.prevent_storage
|
17
|
+
record.should_receive :validation_method
|
18
|
+
record.save
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should run before_validate callbacks' do
|
22
|
+
klass = Model.disposable_copy do
|
23
|
+
before_validation :callback_method
|
24
|
+
end
|
25
|
+
record = klass.new
|
26
|
+
record.prevent_storage
|
27
|
+
record.should_receive :callback_method
|
28
|
+
record.save
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should run after_validate callbacks' do
|
32
|
+
klass = Model.disposable_copy do
|
33
|
+
after_validation :callback_method
|
34
|
+
end
|
35
|
+
record = klass.new
|
36
|
+
record.prevent_storage
|
37
|
+
record.should_receive :callback_method
|
38
|
+
record.save
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should prevent the record from being committed to the database' do
|
42
|
+
record = Model.new
|
43
|
+
record.prevent_storage
|
44
|
+
record.save.should be_false
|
45
|
+
Model.count.should be_zero
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should not run before_save callbacks' do
|
49
|
+
klass = Model.disposable_copy do
|
50
|
+
before_save :callback_method
|
51
|
+
end
|
52
|
+
record = klass.new
|
53
|
+
record.prevent_storage
|
54
|
+
record.should_not_receive :callback_method
|
55
|
+
record.save
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should not run after_save callbacks' do
|
59
|
+
klass = Model.disposable_copy do
|
60
|
+
after_save :callback_method
|
61
|
+
end
|
62
|
+
record = klass.new
|
63
|
+
record.prevent_storage
|
64
|
+
record.should_not_receive :callback_method
|
65
|
+
record.save
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#keep_invalid!' do
|
73
|
+
|
74
|
+
it 'should print a deprecation warning asking to use #prevent_storage' do
|
75
|
+
record = Model.new
|
76
|
+
record.should_receive(:warn).with(/Use prevent_storage instead/i)
|
77
|
+
record.should_receive(:prevent_storage)
|
78
|
+
record.keep_invalid!
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::ShouldReceiveAndExecute do
|
4
|
+
|
5
|
+
describe Object do
|
6
|
+
|
7
|
+
describe '#should_receive_and_execute' do
|
8
|
+
|
9
|
+
it 'should not stub away the original method implementation' do
|
10
|
+
object = "object"
|
11
|
+
object.should_receive_and_execute(:size)
|
12
|
+
object.size.should == 6
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should set an expectation that the given method are called' do
|
16
|
+
(<<-example).should fail_as_example
|
17
|
+
object = 'object'
|
18
|
+
object.should_receive_and_execute(:size)
|
19
|
+
example
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should return the expectation for further parameterization' do
|
23
|
+
object = 'object'
|
24
|
+
object.should_receive_and_execute(:size).class.name.should include('MessageExpectation')
|
25
|
+
object.size # make the example pass
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::StubExisting do
|
4
|
+
|
5
|
+
describe Object do
|
6
|
+
|
7
|
+
describe '#should_receive_and_return' do
|
8
|
+
|
9
|
+
it 'should stub out the given methods with the given return values' do
|
10
|
+
object = 'object'
|
11
|
+
object.should_receive_and_return(:foo => 'foo', :bar => 'bar')
|
12
|
+
object.foo.should == 'foo'
|
13
|
+
object.bar.should == 'bar'
|
14
|
+
object.size.should == 6 # object still responds to unstubbed methods
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should set expectations that all given methods are called' do
|
18
|
+
(<<-example).should fail_as_example
|
19
|
+
object = 'object'
|
20
|
+
object.should_receive_and_return(:foo => 'foo', :bar => 'bar')
|
21
|
+
object.foo
|
22
|
+
# but not object.bar
|
23
|
+
example
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::ShouldReceiveChain do
|
4
|
+
|
5
|
+
describe Object do
|
6
|
+
|
7
|
+
describe '#should_receive_chain' do
|
8
|
+
|
9
|
+
it "should pass when the chain was traversed completely" do
|
10
|
+
(<<-example).should pass_as_example
|
11
|
+
object = "object"
|
12
|
+
object.should_receive_chain(:first_message, :second_message)
|
13
|
+
object.first_message.second_message
|
14
|
+
example
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should fail when the chain wasn't traversed at all" do
|
18
|
+
(<<-example).should fail_as_example
|
19
|
+
object = "object"
|
20
|
+
object.should_receive_chain(:first_message, :second_message)
|
21
|
+
example
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should fail when the chain was only traversed partially" do
|
25
|
+
(<<-example).should fail_as_example
|
26
|
+
object = "object"
|
27
|
+
object.should_receive_chain(:first_message, :second_message)
|
28
|
+
object.first_message
|
29
|
+
example
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should allow to add argument expectations to inner chain links by using array notation" do
|
33
|
+
(<<-example).should pass_as_example
|
34
|
+
object = "object"
|
35
|
+
object.should_receive_chain([:first_message, 'argument'], :second_message)
|
36
|
+
object.first_message('argument').second_message
|
37
|
+
example
|
38
|
+
(<<-example).should fail_as_example
|
39
|
+
object = "object"
|
40
|
+
object.should_receive_chain([:first_message, 'argument'], :second_message)
|
41
|
+
object.first_message('wrong argument').second_message
|
42
|
+
example
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should allow to add argument expectations to the last chain link by using regular should_receive options" do
|
46
|
+
(<<-example).should pass_as_example
|
47
|
+
object = "object"
|
48
|
+
object.should_receive_chain(:first_message, :second_message).with('argument')
|
49
|
+
object.first_message.second_message('argument')
|
50
|
+
example
|
51
|
+
(<<-example).should fail_as_example
|
52
|
+
object = "object"
|
53
|
+
object.should_receive_chain(:first_message, :second_message).with('argument')
|
54
|
+
object.first_message.second_message('wrong argument')
|
55
|
+
example
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should allow inner chain links to be called more than once' do
|
59
|
+
(<<-example).should pass_as_example
|
60
|
+
object = "object"
|
61
|
+
object.should_receive_chain(:first_message, :second_message)
|
62
|
+
object.first_message
|
63
|
+
object.first_message.second_message
|
64
|
+
example
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
describe '#should_not_receive_chain' do
|
71
|
+
|
72
|
+
it "should fail when the chain was traversed completely" do
|
73
|
+
(<<-example).should fail_as_example
|
74
|
+
object = "object"
|
75
|
+
object.should_not_receive_chain(:first_message, :second_message)
|
76
|
+
object.first_message.second_message
|
77
|
+
example
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should pass when the chain wasn't traversed at all" do
|
81
|
+
(<<-example).should pass_as_example
|
82
|
+
object = "object"
|
83
|
+
object.should_not_receive_chain(:first_message, :second_message)
|
84
|
+
example
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should pass when the chain was only traversed partially" do
|
88
|
+
(<<-example).should pass_as_example
|
89
|
+
object = "object"
|
90
|
+
object.should_not_receive_chain(:first_message, :second_message)
|
91
|
+
object.first_message
|
92
|
+
example
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RSpecCandy::Helpers::StubAnyInstance do
|
4
|
+
|
5
|
+
describe Class do
|
6
|
+
|
7
|
+
describe '#stub_any_instance' do
|
8
|
+
|
9
|
+
it 'should apply the given stubs to all future instances of that class' do
|
10
|
+
klass = Class.new {}
|
11
|
+
klass.stub_any_instance(:stubbed_method => 'result')
|
12
|
+
2.times do
|
13
|
+
klass.new.stubbed_method.should == 'result'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should not prevent initializer code to be run' do
|
18
|
+
klass = Class.new do
|
19
|
+
attr_reader :initializer_run
|
20
|
+
def initialize
|
21
|
+
@initializer_run = true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
klass.stub_any_instance(:stubbed_method => 'result')
|
25
|
+
klass.new.initializer_run.should == true
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|