richzhou-rspec-rails 1.3.4
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.
- data/.document +7 -0
- data/.gitignore +8 -0
- data/Contribute.rdoc +4 -0
- data/Gemfile +4 -0
- data/History.rdoc +321 -0
- data/License.txt +33 -0
- data/Manifest.txt +165 -0
- data/README.rdoc +48 -0
- data/Rakefile +12 -0
- data/TODO.txt +17 -0
- data/Upgrade.rdoc +148 -0
- data/generators/integration_spec/integration_spec_generator.rb +10 -0
- data/generators/integration_spec/templates/integration_spec.rb +4 -0
- data/generators/rspec/CHANGES +1 -0
- data/generators/rspec/rspec_generator.rb +72 -0
- data/generators/rspec/templates/previous_failures.txt +0 -0
- data/generators/rspec/templates/rcov.opts +2 -0
- data/generators/rspec/templates/rspec.rake +146 -0
- data/generators/rspec/templates/script/autospec +6 -0
- data/generators/rspec/templates/script/spec +10 -0
- data/generators/rspec/templates/spec.opts +4 -0
- data/generators/rspec/templates/spec_helper.rb +54 -0
- data/generators/rspec_controller/USAGE +33 -0
- data/generators/rspec_controller/rspec_controller_generator.rb +47 -0
- data/generators/rspec_controller/templates/controller_spec.rb +25 -0
- data/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/generators/rspec_default_values.rb +28 -0
- data/generators/rspec_model/USAGE +18 -0
- data/generators/rspec_model/rspec_model_generator.rb +35 -0
- data/generators/rspec_model/templates/model_spec.rb +13 -0
- data/generators/rspec_scaffold/rspec_scaffold_generator.rb +154 -0
- data/generators/rspec_scaffold/templates/controller_spec.rb +131 -0
- data/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
- data/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
- data/generators/rspec_scaffold/templates/index_erb_spec.rb +27 -0
- data/generators/rspec_scaffold/templates/new_erb_spec.rb +25 -0
- data/generators/rspec_scaffold/templates/routing_spec.rb +33 -0
- data/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +5 -0
- data/lib/autotest/rails_rspec.rb +76 -0
- data/lib/spec/rails.rb +26 -0
- data/lib/spec/rails/example.rb +48 -0
- data/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
- data/lib/spec/rails/example/controller_example_group.rb +285 -0
- data/lib/spec/rails/example/cookies_proxy.rb +29 -0
- data/lib/spec/rails/example/functional_example_group.rb +106 -0
- data/lib/spec/rails/example/helper_example_group.rb +153 -0
- data/lib/spec/rails/example/integration_example_group.rb +16 -0
- data/lib/spec/rails/example/model_example_group.rb +15 -0
- data/lib/spec/rails/example/render_observer.rb +82 -0
- data/lib/spec/rails/example/routing_example_group.rb +16 -0
- data/lib/spec/rails/example/routing_helpers.rb +66 -0
- data/lib/spec/rails/example/view_example_group.rb +203 -0
- data/lib/spec/rails/extensions.rb +11 -0
- data/lib/spec/rails/extensions/action_controller/rescue.rb +42 -0
- data/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
- data/lib/spec/rails/extensions/action_controller/test_response.rb +21 -0
- data/lib/spec/rails/extensions/action_view/base.rb +35 -0
- data/lib/spec/rails/extensions/active_record/base.rb +45 -0
- data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
- data/lib/spec/rails/extensions/spec/matchers/have.rb +23 -0
- data/lib/spec/rails/extensions/spec/runner/configuration.rb +45 -0
- data/lib/spec/rails/interop/testcase.rb +14 -0
- data/lib/spec/rails/matchers.rb +32 -0
- data/lib/spec/rails/matchers/ar_be_valid.rb +27 -0
- data/lib/spec/rails/matchers/assert_select.rb +180 -0
- data/lib/spec/rails/matchers/change.rb +13 -0
- data/lib/spec/rails/matchers/have_text.rb +57 -0
- data/lib/spec/rails/matchers/include_text.rb +54 -0
- data/lib/spec/rails/matchers/redirect_to.rb +126 -0
- data/lib/spec/rails/matchers/render_template.rb +129 -0
- data/lib/spec/rails/matchers/route_to.rb +149 -0
- data/lib/spec/rails/mocks.rb +140 -0
- data/lib/spec/rails/version.rb +16 -0
- data/rspec-rails.gemspec +25 -0
- data/spec/autotest/mappings_spec.rb +86 -0
- data/spec/rails_suite.rb +7 -0
- data/spec/resources/controllers/action_view_base_spec_controller.rb +2 -0
- data/spec/resources/controllers/application.rb +9 -0
- data/spec/resources/controllers/controller_spec_controller.rb +127 -0
- data/spec/resources/controllers/example.txt +1 -0
- data/spec/resources/controllers/redirect_spec_controller.rb +70 -0
- data/spec/resources/controllers/render_spec_controller.rb +34 -0
- data/spec/resources/controllers/rjs_spec_controller.rb +58 -0
- data/spec/resources/helpers/addition_helper.rb +5 -0
- data/spec/resources/helpers/explicit_helper.rb +46 -0
- data/spec/resources/helpers/more_explicit_helper.rb +5 -0
- data/spec/resources/helpers/plugin_application_helper.rb +6 -0
- data/spec/resources/helpers/view_spec_helper.rb +13 -0
- data/spec/resources/models/animal.rb +4 -0
- data/spec/resources/models/person.rb +18 -0
- data/spec/resources/models/thing.rb +3 -0
- data/spec/resources/views/controller_spec/_partial.html.erb +0 -0
- data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb +1 -0
- data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb +1 -0
- data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb +0 -0
- data/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb +1 -0
- data/spec/resources/views/controller_spec/action_with_template.html.erb +1 -0
- data/spec/resources/views/controller_spec/non_existent_action_with_existent_template.html.erb +1 -0
- data/spec/resources/views/layouts/application.html.erb +0 -0
- data/spec/resources/views/layouts/simple.html.erb +0 -0
- data/spec/resources/views/objects/_object.html.erb +1 -0
- data/spec/resources/views/render_spec/_a_partial.html.erb +0 -0
- data/spec/resources/views/render_spec/action_with_alternate_layout.html.erb +0 -0
- data/spec/resources/views/render_spec/some_action.html.erb +0 -0
- data/spec/resources/views/render_spec/some_action.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/_replacement_partial.html.erb +1 -0
- data/spec/resources/views/rjs_spec/hide_div.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/hide_page_element.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/insert_html.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_effect.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs +1 -0
- data/spec/resources/views/tag_spec/no_tags.html.erb +1 -0
- data/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb +1 -0
- data/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb +1 -0
- data/spec/resources/views/view_spec/_partial.html.erb +2 -0
- data/spec/resources/views/view_spec/_partial_used_twice.html.erb +0 -0
- data/spec/resources/views/view_spec/_partial_with_local_variable.html.erb +1 -0
- data/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb +1 -0
- data/spec/resources/views/view_spec/_spacer.html.erb +1 -0
- data/spec/resources/views/view_spec/accessor.html.erb +6 -0
- data/spec/resources/views/view_spec/block_helper.html.erb +3 -0
- data/spec/resources/views/view_spec/entry_form.html.erb +2 -0
- data/spec/resources/views/view_spec/explicit_helper.html.erb +2 -0
- data/spec/resources/views/view_spec/foo/show.html.erb +1 -0
- data/spec/resources/views/view_spec/implicit_helper.html.erb +2 -0
- data/spec/resources/views/view_spec/multiple_helpers.html.erb +3 -0
- data/spec/resources/views/view_spec/path_params.html.erb +1 -0
- data/spec/resources/views/view_spec/should_not_receive.html.erb +3 -0
- data/spec/resources/views/view_spec/template_with_partial.html.erb +5 -0
- data/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb +3 -0
- data/spec/resources/views/view_spec/template_with_partial_with_array.html.erb +1 -0
- data/spec/resources/views/view_spec/view_helpers.html.erb +1 -0
- data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +109 -0
- data/spec/spec/rails/example/configuration_spec.rb +67 -0
- data/spec/spec/rails/example/controller_example_group_spec.rb +307 -0
- data/spec/spec/rails/example/controller_isolation_spec.rb +75 -0
- data/spec/spec/rails/example/cookies_proxy_spec.rb +87 -0
- data/spec/spec/rails/example/error_handling_spec.rb +90 -0
- data/spec/spec/rails/example/example_group_factory_spec.rb +112 -0
- data/spec/spec/rails/example/helper_example_group_spec.rb +247 -0
- data/spec/spec/rails/example/model_example_group_spec.rb +32 -0
- data/spec/spec/rails/example/routing_example_group_spec.rb +9 -0
- data/spec/spec/rails/example/shared_routing_example_group_examples.rb +241 -0
- data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
- data/spec/spec/rails/example/view_example_group_spec.rb +346 -0
- data/spec/spec/rails/extensions/action_view_base_spec.rb +79 -0
- data/spec/spec/rails/extensions/active_record_spec.rb +14 -0
- data/spec/spec/rails/interop/testcase_spec.rb +70 -0
- data/spec/spec/rails/matchers/ar_be_valid_spec.rb +19 -0
- data/spec/spec/rails/matchers/assert_select_spec.rb +835 -0
- data/spec/spec/rails/matchers/errors_on_spec.rb +37 -0
- data/spec/spec/rails/matchers/have_text_spec.rb +69 -0
- data/spec/spec/rails/matchers/include_text_spec.rb +62 -0
- data/spec/spec/rails/matchers/redirect_to_spec.rb +253 -0
- data/spec/spec/rails/matchers/render_template_spec.rb +208 -0
- data/spec/spec/rails/matchers/should_change_spec.rb +15 -0
- data/spec/spec/rails/mocks/ar_classes.rb +10 -0
- data/spec/spec/rails/mocks/mock_model_spec.rb +112 -0
- data/spec/spec/rails/mocks/stub_model_spec.rb +80 -0
- data/spec/spec/rails/sample_modified_fixture.rb +8 -0
- data/spec/spec/rails/sample_spec.rb +8 -0
- data/spec/spec/rails/spec_spec.rb +11 -0
- data/spec/spec_helper.rb +78 -0
- metadata +363 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class CookiesProxyExamplesController < ActionController::Base
|
4
|
+
def index
|
5
|
+
cookies[:key] = cookies[:key]
|
6
|
+
render :text => ""
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module Spec
|
11
|
+
module Rails
|
12
|
+
module Example
|
13
|
+
describe CookiesProxy, :type => :controller do
|
14
|
+
controller_name :cookies_proxy_examples
|
15
|
+
|
16
|
+
describe "with a String key" do
|
17
|
+
|
18
|
+
it "should accept a String value" do
|
19
|
+
proxy = CookiesProxy.new(self)
|
20
|
+
proxy['key'] = 'value'
|
21
|
+
get :index
|
22
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
23
|
+
proxy['key'].should == 'value'
|
24
|
+
else
|
25
|
+
proxy['key'].should == ['value']
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should accept a Hash value" do
|
30
|
+
proxy = CookiesProxy.new(self)
|
31
|
+
proxy['key'] = { :value => 'value', :expires => expiration = 1.hour.from_now, :path => path = '/path' }
|
32
|
+
get :index
|
33
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
34
|
+
proxy['key'].should == 'value'
|
35
|
+
else
|
36
|
+
proxy['key'].should == ['value']
|
37
|
+
proxy['key'].value.should == ['value']
|
38
|
+
proxy['key'].expires.should == expiration
|
39
|
+
proxy['key'].path.should == path
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "with a Symbol key" do
|
46
|
+
|
47
|
+
it "should accept a String value" do
|
48
|
+
proxy = CookiesProxy.new(self)
|
49
|
+
proxy[:key] = 'value'
|
50
|
+
get :index
|
51
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
52
|
+
proxy[:key].should == 'value'
|
53
|
+
else
|
54
|
+
proxy[:key].should == ['value']
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should accept a Hash value" do
|
59
|
+
proxy = CookiesProxy.new(self)
|
60
|
+
proxy[:key] = { :value => 'value', :expires => expiration = 1.hour.from_now, :path => path = '/path' }
|
61
|
+
get :index
|
62
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
63
|
+
proxy[:key].should == 'value'
|
64
|
+
else
|
65
|
+
proxy[:key].should == ['value']
|
66
|
+
proxy[:key].value.should == ['value']
|
67
|
+
proxy[:key].expires.should == expiration
|
68
|
+
proxy[:key].path.should == path
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "#delete" do
|
75
|
+
it "should delete from the response cookies" do
|
76
|
+
proxy = CookiesProxy.new(self)
|
77
|
+
response_cookies = mock('cookies')
|
78
|
+
response.should_receive(:cookies).and_return(response_cookies)
|
79
|
+
response_cookies.should_receive(:delete).with('key')
|
80
|
+
proxy.delete :key
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'controller_spec_controller'
|
3
|
+
|
4
|
+
['integration', 'isolation'].each do |mode|
|
5
|
+
describe "A controller example running in #{mode} mode", :type => :controller do
|
6
|
+
controller_name :controller_spec
|
7
|
+
integrate_views if mode == 'integration'
|
8
|
+
|
9
|
+
describe "without use_rails_error_handling!" do
|
10
|
+
describe "with an error that is *not* rescued" do
|
11
|
+
it "raises the error" do
|
12
|
+
lambda do
|
13
|
+
get 'un_rescued_error_action'
|
14
|
+
end.should raise_error(ControllerSpecController::UnRescuedError)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
describe "with an error that *is* rescued" do
|
18
|
+
it "returns a 200" do
|
19
|
+
get 'rescued_error_action'
|
20
|
+
response.response_code.should == 200
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "with deprecated use_rails_error_handling!" do
|
26
|
+
before(:each) do
|
27
|
+
Kernel.stub!(:warn)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "warns of deprecation" do
|
31
|
+
Kernel.should_receive(:warn).with(/DEPRECATION NOTICE/)
|
32
|
+
controller.use_rails_error_handling!
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "with an error that is *not* rescued" do
|
36
|
+
it "returns the error code" do
|
37
|
+
controller.use_rails_error_handling!
|
38
|
+
get 'un_rescued_error_action'
|
39
|
+
response.response_code.should == 500
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "with an error that *is* rescued" do
|
44
|
+
it "returns a 200" do
|
45
|
+
controller.use_rails_error_handling!
|
46
|
+
get 'rescued_error_action'
|
47
|
+
response.response_code.should == 200
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "with rescue_action_in_public!" do
|
53
|
+
describe "with an error that is *not* rescued" do
|
54
|
+
it "returns the error code" do
|
55
|
+
rescue_action_in_public!
|
56
|
+
get 'un_rescued_error_action'
|
57
|
+
response.response_code.should == 500
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "with an error that *is* rescued" do
|
62
|
+
it "returns a 200" do
|
63
|
+
rescue_action_in_public!
|
64
|
+
get 'rescued_error_action'
|
65
|
+
response.response_code.should == 200
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "with bypass_rescue" do
|
71
|
+
describe "with an error that is *not* rescued" do
|
72
|
+
it "raises the error" do
|
73
|
+
bypass_rescue
|
74
|
+
lambda do
|
75
|
+
get 'un_rescued_error_action'
|
76
|
+
end.should raise_error(ControllerSpecController::UnRescuedError)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "with an error that *is* rescued" do
|
81
|
+
it "raises the error" do
|
82
|
+
bypass_rescue
|
83
|
+
lambda do
|
84
|
+
get 'rescued_error_action'
|
85
|
+
end.should raise_error(ControllerSpecController::RescuedError)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
describe ExampleGroupFactory do
|
6
|
+
it "should return a ModelExampleGroup when given :type => :model" do
|
7
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
8
|
+
"name", :type => :model
|
9
|
+
) {}
|
10
|
+
example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return a ModelExampleGroup when given :location => '/blah/spec/models/'" do
|
14
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
15
|
+
"name", :location => '/blah/spec/models/blah.rb'
|
16
|
+
) {}
|
17
|
+
example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\models\\' (windows format)" do
|
21
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
22
|
+
"name", :location => '\\blah\\spec\\models\\blah.rb'
|
23
|
+
) {}
|
24
|
+
example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return an ActiveSupport::TestCase when given :location => '/blah/spec/foo/' (anything other than controllers, views and helpers)" do
|
28
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
29
|
+
"name", :location => '/blah/spec/foo/blah.rb'
|
30
|
+
) {}
|
31
|
+
example_group.superclass.should == ActiveSupport::TestCase
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return an ActiveSupport::TestCase when given :location => '\\blah\\spec\\foo\\' (windows format) (anything other than controllers, views and helpers)" do
|
35
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
36
|
+
"name", :location => '\\blah\\spec\\foo\\blah.rb'
|
37
|
+
) {}
|
38
|
+
example_group.superclass.should == ActiveSupport::TestCase
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return a ViewExampleGroup when given :type => :view" do
|
42
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
43
|
+
"name", :type => :view
|
44
|
+
) {}
|
45
|
+
example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return a ViewExampleGroup when given :location => '/blah/spec/views/'" do
|
49
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
50
|
+
"name", :location => '/blah/spec/views/blah.rb'
|
51
|
+
) {}
|
52
|
+
example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\views\\' (windows format)" do
|
56
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
57
|
+
"name", :location => '\\blah\\spec\\views\\blah.rb'
|
58
|
+
) {}
|
59
|
+
example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return a HelperExampleGroup when given :type => :helper" do
|
63
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
64
|
+
"name", :type => :helper
|
65
|
+
) {}
|
66
|
+
example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should return a HelperExampleGroup when given :location => '/blah/spec/helpers/'" do
|
70
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
71
|
+
"name", :location => '/blah/spec/helpers/blah.rb'
|
72
|
+
) {}
|
73
|
+
example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\helpers\\' (windows format)" do
|
77
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
78
|
+
"name", :location => '\\blah\\spec\\helpers\\blah.rb'
|
79
|
+
) {}
|
80
|
+
example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return a ControllerExampleGroup when given :type => :controller" do
|
84
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
85
|
+
"name", :type => :controller
|
86
|
+
) {}
|
87
|
+
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should return a ControllerExampleGroup when given :location => '/blah/spec/controllers/'" do
|
91
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
92
|
+
"name", :location => '/blah/spec/controllers/blah.rb'
|
93
|
+
) {}
|
94
|
+
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\controllers\\' (windows format)" do
|
98
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
99
|
+
"name", :location => '\\blah\\spec\\controllers\\blah.rb'
|
100
|
+
) {}
|
101
|
+
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should favor the :type over the :location" do
|
105
|
+
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
106
|
+
"name", :location => '/blah/spec/models/blah.rb', :type => :controller
|
107
|
+
) {}
|
108
|
+
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,247 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
Spec::Runner.configuration.global_fixtures = :people
|
3
|
+
|
4
|
+
describe ExplicitHelper, :type => :helper do
|
5
|
+
include ExplicitHelper
|
6
|
+
|
7
|
+
it "should not require naming the helper if describe is passed a type" do
|
8
|
+
method_in_explicit_helper.should match(/text from a method/)
|
9
|
+
helper.method_in_explicit_helper.should match(/text from a method/)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Spec
|
14
|
+
module Rails
|
15
|
+
module Example
|
16
|
+
describe HelperExampleGroup, :type => :helper do
|
17
|
+
helper_name :explicit
|
18
|
+
|
19
|
+
accesses_configured_helper_methods
|
20
|
+
|
21
|
+
it "DEPRECATED should have direct access to methods defined in helpers" do
|
22
|
+
method_in_explicit_helper.should =~ /text from a method/
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should expose the helper with the #helper method" do
|
26
|
+
helper.method_in_explicit_helper.should =~ /text from a method/
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have access to named routes" do
|
30
|
+
rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
|
31
|
+
rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
|
32
|
+
|
33
|
+
helper.named_url.should == "http://test.host/rspec_on_rails_specs"
|
34
|
+
helper.named_path.should == "/rspec_on_rails_specs"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should fail if the helper method deson't exist" do
|
38
|
+
lambda { non_existent_helper_method }.should raise_error(NameError)
|
39
|
+
lambda { helper.non_existent_helper_method }.should raise_error(NameError)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should have access to session" do
|
43
|
+
session[:foo] = 'bar'
|
44
|
+
session_foo.should == 'bar'
|
45
|
+
helper.session_foo.should == 'bar'
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should have access to params" do
|
49
|
+
params[:foo] = 'bar'
|
50
|
+
params_foo.should == 'bar'
|
51
|
+
helper.params_foo.should == 'bar'
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should have access to request" do
|
55
|
+
request.stub!(:thing).and_return('bar')
|
56
|
+
request_thing.should == 'bar'
|
57
|
+
helper.request_thing.should == 'bar'
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should have access to flash" do
|
61
|
+
flash[:thing] = 'camera'
|
62
|
+
flash_thing.should == 'camera'
|
63
|
+
helper.flash_thing.should == 'camera'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe HelperExampleGroup, "#eval_erb", :type => :helper do
|
68
|
+
helper_name :explicit
|
69
|
+
|
70
|
+
it "should support methods that accept blocks" do
|
71
|
+
eval_erb("<% prepend 'foo' do %>bar<% end %>").should == "foobar"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe HelperExampleGroup, ".fixtures", :type => :helper do
|
76
|
+
helper_name :explicit
|
77
|
+
fixtures :animals
|
78
|
+
|
79
|
+
it "should load fixtures" do
|
80
|
+
pig = animals(:pig)
|
81
|
+
pig.class.should == Animal
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should load global fixtures" do
|
85
|
+
lachie = people(:lachie)
|
86
|
+
lachie.class.should == Person
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "methods from standard helpers", :type => :helper do
|
91
|
+
helper_name :explicit
|
92
|
+
it "should be exposed to the helper" do
|
93
|
+
helper.link_to("Foo","http://bar").should have_tag("a")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe HelperExampleGroup, "included modules", :type => :helper do
|
98
|
+
helpers = [
|
99
|
+
ActionView::Helpers::ActiveRecordHelper,
|
100
|
+
ActionView::Helpers::AssetTagHelper,
|
101
|
+
ActionView::Helpers::BenchmarkHelper,
|
102
|
+
ActionView::Helpers::CacheHelper,
|
103
|
+
ActionView::Helpers::CaptureHelper,
|
104
|
+
ActionView::Helpers::DateHelper,
|
105
|
+
ActionView::Helpers::DebugHelper,
|
106
|
+
ActionView::Helpers::FormHelper,
|
107
|
+
ActionView::Helpers::FormOptionsHelper,
|
108
|
+
ActionView::Helpers::FormTagHelper,
|
109
|
+
ActionView::Helpers::JavaScriptHelper,
|
110
|
+
ActionView::Helpers::NumberHelper,
|
111
|
+
ActionView::Helpers::PrototypeHelper,
|
112
|
+
ActionView::Helpers::ScriptaculousHelper,
|
113
|
+
ActionView::Helpers::TagHelper,
|
114
|
+
ActionView::Helpers::TextHelper,
|
115
|
+
ActionView::Helpers::UrlHelper
|
116
|
+
]
|
117
|
+
helpers.each do |helper_module|
|
118
|
+
it "should include #{helper_module}" do
|
119
|
+
self.class.ancestors.should include(helper_module)
|
120
|
+
helper.class.ancestors.should include(helper_module)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
|
126
|
+
# When that is done, remove this method
|
127
|
+
describe HelperExampleGroup, "#protect_against_forgery?", :type => :helper do
|
128
|
+
it "should return false" do
|
129
|
+
protect_against_forgery?.should be_false
|
130
|
+
helper.protect_against_forgery?.should be_false
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe HelperExampleGroup, "#assigns", :type => :helper do
|
135
|
+
helper_name :addition
|
136
|
+
it "should expose variables to helper" do
|
137
|
+
assigns[:addend] = 3
|
138
|
+
helper.plus(4).should == 7
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should make helper ivars available in example" do
|
142
|
+
assigns[:addend] = 3
|
143
|
+
assigns[:addend].should == 3
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe HelperExampleGroup, "using a helper that uses output_buffer inside helper", :type => :helper do
|
148
|
+
helper_name :explicit
|
149
|
+
|
150
|
+
before(:each) do
|
151
|
+
if ::Rails::VERSION::STRING < "2.2"
|
152
|
+
pending("need to get this new feature working against pre 2.2 versions of rails")
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should not raise an error" do
|
157
|
+
lambda { method_using_output_buffer }.should_not raise_error
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should put the output in the output_buffer" do
|
161
|
+
method_using_output_buffer
|
162
|
+
output_buffer.should == "the_text_from_concat"
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe HelperExampleGroup, "using a helper that tries to access @template", :type => :helper do
|
167
|
+
helper_name :explicit
|
168
|
+
|
169
|
+
it "should not raise an error" do
|
170
|
+
lambda { method_using_template }.should_not raise_error
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should have the correct output" do
|
174
|
+
method_using_template.should have_text(/#some_id/)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
# both specs the same as textmate invokes first-then-second but rake spec:plugins:rspec_on_rails invokes second-then-first
|
179
|
+
describe HelperExampleGroup, "new helper for each spec - instance variables side effects are isolated", :type=> :helper do
|
180
|
+
it 'should be able to set an instance variable on the helper on a new instance of the helper' do
|
181
|
+
helper.instance_variable_get(:@test_instance_var).should be_nil
|
182
|
+
helper.instance_variable_set(:@test_instance_var, :first_value)
|
183
|
+
helper.instance_variable_get(:@test_instance_var).should == :first_value
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'should get a clean copy of the helper with no saved instance variables from the last run' do
|
187
|
+
helper.instance_variable_get(:@test_instance_var).should be_nil
|
188
|
+
helper.instance_variable_set(:@test_instance_var, :second_value)
|
189
|
+
helper.instance_variable_get(:@test_instance_var).should == :second_value
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
module Bug11223
|
197
|
+
# see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
|
198
|
+
describe 'Accessing flash from helper spec', :type => :helper do
|
199
|
+
it 'should not raise an error' do
|
200
|
+
lambda { flash['test'] }.should_not raise_error
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
module Spec
|
206
|
+
module Rails
|
207
|
+
module Example
|
208
|
+
describe HelperExampleGroup do
|
209
|
+
it "should clear its name from the description" do
|
210
|
+
group = describe("foo", :type => :helper) do
|
211
|
+
$nested_group = describe("bar") do
|
212
|
+
end
|
213
|
+
end
|
214
|
+
group.description.to_s.should == "foo"
|
215
|
+
$nested_group.description.to_s.should == "foo bar"
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
module Bug719
|
223
|
+
# see http://rspec.lighthouseapp.com/projects/5645/tickets/719
|
224
|
+
# FIXME - helper and example provided in ticket. The example did
|
225
|
+
# fail initially, so running it now shows that the bug is fixed,
|
226
|
+
# but this doesn't serve as a good internal example.
|
227
|
+
module ImagesHelper
|
228
|
+
def hide_images_button
|
229
|
+
content_tag :div, :class => :hide_images_button do
|
230
|
+
button_to_function "Hide Images", :id => :hide_images_button do |page|
|
231
|
+
page[:more_images_button].toggle
|
232
|
+
page[:image_browser].toggle
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
describe ImagesHelper, :type => :helper do
|
239
|
+
it "should render a hide_images_button" do
|
240
|
+
helper.hide_images_button.should have_tag('div[class=?]','hide_images_button') do
|
241
|
+
with_tag('input[id=?][type=?][value=?][onclick^=?]',
|
242
|
+
'hide_images_button', 'button', 'Hide Images',
|
243
|
+
"$("more_images_button").toggle();\n$("image_browser").toggle();;")
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|