mcmire-rspec-rails 1.1.99.9

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 (164) hide show
  1. data/History.txt +174 -0
  2. data/License.txt +33 -0
  3. data/Manifest.txt +164 -0
  4. data/README.txt +45 -0
  5. data/Rakefile +63 -0
  6. data/TODO.txt +1 -0
  7. data/Upgrade.markdown +52 -0
  8. data/features/step_definitions/people.rb +6 -0
  9. data/features/support/env.rb +13 -0
  10. data/features/transactions/transactions_should_rollback.feature +16 -0
  11. data/generators/rspec/CHANGES +1 -0
  12. data/generators/rspec/rspec_generator.rb +37 -0
  13. data/generators/rspec/templates/previous_failures.txt +0 -0
  14. data/generators/rspec/templates/rcov.opts +2 -0
  15. data/generators/rspec/templates/rspec.rake +177 -0
  16. data/generators/rspec/templates/script/autospec +5 -0
  17. data/generators/rspec/templates/script/spec +4 -0
  18. data/generators/rspec/templates/script/spec_server +37 -0
  19. data/generators/rspec/templates/spec.opts +4 -0
  20. data/generators/rspec/templates/spec_helper.rb +47 -0
  21. data/generators/rspec_controller/USAGE +33 -0
  22. data/generators/rspec_controller/rspec_controller_generator.rb +45 -0
  23. data/generators/rspec_controller/templates/controller_spec.rb +25 -0
  24. data/generators/rspec_controller/templates/helper_spec.rb +11 -0
  25. data/generators/rspec_controller/templates/view_spec.rb +12 -0
  26. data/generators/rspec_default_values.rb +19 -0
  27. data/generators/rspec_model/USAGE +18 -0
  28. data/generators/rspec_model/rspec_model_generator.rb +35 -0
  29. data/generators/rspec_model/templates/model_spec.rb +15 -0
  30. data/generators/rspec_scaffold/rspec_scaffold_generator.rb +150 -0
  31. data/generators/rspec_scaffold/templates/controller_spec.rb +171 -0
  32. data/generators/rspec_scaffold/templates/edit_erb_spec.rb +27 -0
  33. data/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
  34. data/generators/rspec_scaffold/templates/index_erb_spec.rb +28 -0
  35. data/generators/rspec_scaffold/templates/new_erb_spec.rb +27 -0
  36. data/generators/rspec_scaffold/templates/routing_spec.rb +63 -0
  37. data/generators/rspec_scaffold/templates/show_erb_spec.rb +23 -0
  38. data/init.rb +9 -0
  39. data/lib/autotest/discover.rb +1 -0
  40. data/lib/autotest/rails_rspec.rb +76 -0
  41. data/lib/spec/rails.rb +37 -0
  42. data/lib/spec/rails/example.rb +53 -0
  43. data/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
  44. data/lib/spec/rails/example/controller_example_group.rb +242 -0
  45. data/lib/spec/rails/example/cookies_proxy.rb +29 -0
  46. data/lib/spec/rails/example/functional_example_group.rb +84 -0
  47. data/lib/spec/rails/example/helper_example_group.rb +167 -0
  48. data/lib/spec/rails/example/model_example_group.rb +14 -0
  49. data/lib/spec/rails/example/render_observer.rb +67 -0
  50. data/lib/spec/rails/example/routing_helpers.rb +68 -0
  51. data/lib/spec/rails/example/view_example_group.rb +186 -0
  52. data/lib/spec/rails/extensions.rb +15 -0
  53. data/lib/spec/rails/extensions/action_controller/rescue.rb +42 -0
  54. data/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
  55. data/lib/spec/rails/extensions/action_controller/test_response.rb +21 -0
  56. data/lib/spec/rails/extensions/action_view/base.rb +33 -0
  57. data/lib/spec/rails/extensions/active_record/base.rb +43 -0
  58. data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
  59. data/lib/spec/rails/extensions/spec/matchers/have.rb +23 -0
  60. data/lib/spec/rails/extensions/spec/runner/configuration.rb +48 -0
  61. data/lib/spec/rails/interop/testcase.rb +14 -0
  62. data/lib/spec/rails/matchers.rb +40 -0
  63. data/lib/spec/rails/matchers/ar_be_valid.rb +44 -0
  64. data/lib/spec/rails/matchers/assert_select.rb +131 -0
  65. data/lib/spec/rails/matchers/change.rb +11 -0
  66. data/lib/spec/rails/matchers/have_text.rb +57 -0
  67. data/lib/spec/rails/matchers/include_text.rb +54 -0
  68. data/lib/spec/rails/matchers/redirect_to.rb +126 -0
  69. data/lib/spec/rails/matchers/render_template.rb +114 -0
  70. data/lib/spec/rails/mocks.rb +135 -0
  71. data/lib/spec/rails/spec_server.rb +97 -0
  72. data/lib/spec/rails/story_adapter.rb +79 -0
  73. data/lib/spec/rails/version.rb +16 -0
  74. data/rspec-rails.gemspec +39 -0
  75. data/spec/autotest/mappings_spec.rb +36 -0
  76. data/spec/rails_suite.rb +7 -0
  77. data/spec/resources/controllers/action_view_base_spec_controller.rb +2 -0
  78. data/spec/resources/controllers/application.rb +9 -0
  79. data/spec/resources/controllers/controller_spec_controller.rb +116 -0
  80. data/spec/resources/controllers/redirect_spec_controller.rb +70 -0
  81. data/spec/resources/controllers/render_spec_controller.rb +30 -0
  82. data/spec/resources/controllers/rjs_spec_controller.rb +58 -0
  83. data/spec/resources/helpers/addition_helper.rb +5 -0
  84. data/spec/resources/helpers/explicit_helper.rb +46 -0
  85. data/spec/resources/helpers/more_explicit_helper.rb +5 -0
  86. data/spec/resources/helpers/plugin_application_helper.rb +6 -0
  87. data/spec/resources/helpers/view_spec_helper.rb +13 -0
  88. data/spec/resources/models/animal.rb +4 -0
  89. data/spec/resources/models/person.rb +18 -0
  90. data/spec/resources/models/thing.rb +3 -0
  91. data/spec/resources/views/controller_spec/_partial.rhtml +0 -0
  92. data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
  93. data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
  94. data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
  95. data/spec/resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
  96. data/spec/resources/views/controller_spec/action_with_template.rhtml +1 -0
  97. data/spec/resources/views/layouts/application.rhtml +0 -0
  98. data/spec/resources/views/layouts/simple.rhtml +0 -0
  99. data/spec/resources/views/objects/_object.html.erb +1 -0
  100. data/spec/resources/views/render_spec/_a_partial.rhtml +0 -0
  101. data/spec/resources/views/render_spec/action_with_alternate_layout.rhtml +0 -0
  102. data/spec/resources/views/render_spec/some_action.html.erb +0 -0
  103. data/spec/resources/views/render_spec/some_action.js.rjs +1 -0
  104. data/spec/resources/views/render_spec/some_action.rjs +1 -0
  105. data/spec/resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
  106. data/spec/resources/views/rjs_spec/hide_div.rjs +1 -0
  107. data/spec/resources/views/rjs_spec/hide_page_element.rjs +1 -0
  108. data/spec/resources/views/rjs_spec/insert_html.rjs +1 -0
  109. data/spec/resources/views/rjs_spec/replace.rjs +1 -0
  110. data/spec/resources/views/rjs_spec/replace_html.rjs +1 -0
  111. data/spec/resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
  112. data/spec/resources/views/rjs_spec/visual_effect.rjs +1 -0
  113. data/spec/resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
  114. data/spec/resources/views/tag_spec/no_tags.rhtml +1 -0
  115. data/spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
  116. data/spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
  117. data/spec/resources/views/view_spec/_partial.rhtml +2 -0
  118. data/spec/resources/views/view_spec/_partial_used_twice.rhtml +0 -0
  119. data/spec/resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
  120. data/spec/resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
  121. data/spec/resources/views/view_spec/_spacer.rhtml +1 -0
  122. data/spec/resources/views/view_spec/accessor.rhtml +5 -0
  123. data/spec/resources/views/view_spec/block_helper.rhtml +3 -0
  124. data/spec/resources/views/view_spec/entry_form.rhtml +2 -0
  125. data/spec/resources/views/view_spec/explicit_helper.rhtml +2 -0
  126. data/spec/resources/views/view_spec/foo/show.rhtml +1 -0
  127. data/spec/resources/views/view_spec/implicit_helper.rhtml +2 -0
  128. data/spec/resources/views/view_spec/multiple_helpers.rhtml +3 -0
  129. data/spec/resources/views/view_spec/path_params.html.erb +1 -0
  130. data/spec/resources/views/view_spec/should_not_receive.rhtml +3 -0
  131. data/spec/resources/views/view_spec/template_with_partial.rhtml +5 -0
  132. data/spec/resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
  133. data/spec/resources/views/view_spec/template_with_partial_with_array.rhtml +1 -0
  134. data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +109 -0
  135. data/spec/spec/rails/example/configuration_spec.rb +65 -0
  136. data/spec/spec/rails/example/controller_example_group_spec.rb +275 -0
  137. data/spec/spec/rails/example/controller_isolation_spec.rb +56 -0
  138. data/spec/spec/rails/example/cookies_proxy_spec.rb +87 -0
  139. data/spec/spec/rails/example/error_handling_spec.rb +90 -0
  140. data/spec/spec/rails/example/example_group_factory_spec.rb +112 -0
  141. data/spec/spec/rails/example/helper_example_group_spec.rb +206 -0
  142. data/spec/spec/rails/example/model_example_group_spec.rb +20 -0
  143. data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
  144. data/spec/spec/rails/example/view_example_group_spec.rb +335 -0
  145. data/spec/spec/rails/extensions/action_view_base_spec.rb +48 -0
  146. data/spec/spec/rails/extensions/active_record_spec.rb +14 -0
  147. data/spec/spec/rails/interop/testcase_spec.rb +70 -0
  148. data/spec/spec/rails/matchers/ar_be_valid_spec.rb +45 -0
  149. data/spec/spec/rails/matchers/assert_select_spec.rb +811 -0
  150. data/spec/spec/rails/matchers/errors_on_spec.rb +25 -0
  151. data/spec/spec/rails/matchers/have_text_spec.rb +70 -0
  152. data/spec/spec/rails/matchers/include_text_spec.rb +62 -0
  153. data/spec/spec/rails/matchers/redirect_to_spec.rb +253 -0
  154. data/spec/spec/rails/matchers/render_template_spec.rb +183 -0
  155. data/spec/spec/rails/matchers/should_change_spec.rb +15 -0
  156. data/spec/spec/rails/mocks/ar_classes.rb +10 -0
  157. data/spec/spec/rails/mocks/mock_model_spec.rb +106 -0
  158. data/spec/spec/rails/mocks/stub_model_spec.rb +80 -0
  159. data/spec/spec/rails/sample_modified_fixture.rb +8 -0
  160. data/spec/spec/rails/sample_spec.rb +8 -0
  161. data/spec/spec/rails/spec_server_spec.rb +107 -0
  162. data/spec/spec/rails/spec_spec.rb +11 -0
  163. data/spec/spec_helper.rb +78 -0
  164. metadata +262 -0
@@ -0,0 +1,90 @@
1
+ require File.dirname(__FILE__) + '/../../../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 File.dirname(__FILE__) + '/../../../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 :spec_path => '/blah/spec/models/'" do
14
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
15
+ "name", :spec_path => '/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 :spec_path => '\\blah\\spec\\models\\' (windows format)" do
21
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
22
+ "name", :spec_path => '\\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 :spec_path => '/blah/spec/foo/' (anything other than controllers, views and helpers)" do
28
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
29
+ "name", :spec_path => '/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 :spec_path => '\\blah\\spec\\foo\\' (windows format) (anything other than controllers, views and helpers)" do
35
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
36
+ "name", :spec_path => '\\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 :spec_path => '/blah/spec/views/'" do
49
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
50
+ "name", :spec_path => '/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 :spec_path => '\\blah\\spec\\views\\' (windows format)" do
56
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
57
+ "name", :spec_path => '\\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 :spec_path => '/blah/spec/helpers/'" do
70
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
71
+ "name", :spec_path => '/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 :spec_path => '\\blah\\spec\\helpers\\' (windows format)" do
77
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
78
+ "name", :spec_path => '\\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 :spec_path => '/blah/spec/controllers/'" do
91
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
92
+ "name", :spec_path => '/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 :spec_path => '\\blah\\spec\\controllers\\' (windows format)" do
98
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
99
+ "name", :spec_path => '\\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 :spec_path" do
105
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
106
+ "name", :spec_path => '/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,206 @@
1
+ require File.dirname(__FILE__) + '/../../../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.1"
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
+ end
179
+ end
180
+ end
181
+
182
+ module Bug11223
183
+ # see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
184
+ describe 'Accessing flash from helper spec', :type => :helper do
185
+ it 'should not raise an error' do
186
+ lambda { flash['test'] }.should_not raise_error
187
+ end
188
+ end
189
+ end
190
+
191
+ module Spec
192
+ module Rails
193
+ module Example
194
+ describe HelperExampleGroup do
195
+ it "should clear its name from the description" do
196
+ group = describe("foo", :type => :helper) do
197
+ $nested_group = describe("bar") do
198
+ end
199
+ end
200
+ group.description.to_s.should == "foo"
201
+ $nested_group.description.to_s.should == "foo bar"
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ module Spec
4
+ module Rails
5
+ module Example
6
+ describe ModelExampleGroup do
7
+ accesses_configured_helper_methods
8
+
9
+ it "clears its name from the description" do
10
+ group = describe("foo", :type => :model) do
11
+ $nested_group = describe("bar") do
12
+ end
13
+ end
14
+ group.description.to_s.should == "foo"
15
+ $nested_group.description.to_s.should == "foo bar"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe "assert_equal", :shared => true do
4
+ it "like assert_equal" do
5
+ assert_equal 1, 1
6
+ lambda {
7
+ assert_equal 1, 2
8
+ }.should raise_error(Test::Unit::AssertionFailedError)
9
+ end
10
+ end
11
+
12
+ describe "A model spec should be able to access 'test/unit' assertions", :type => :model do
13
+ it_should_behave_like "assert_equal"
14
+ end
15
+
16
+ describe "A view spec should be able to access 'test/unit' assertions", :type => :view do
17
+ it_should_behave_like "assert_equal"
18
+ end
19
+
20
+ describe "A helper spec should be able to access 'test/unit' assertions", :type => :helper do
21
+ it_should_behave_like "assert_equal"
22
+ end
23
+
24
+ describe "A controller spec with integrated views should be able to access 'test/unit' assertions", :type => :controller do
25
+ controller_name :controller_spec
26
+ integrate_views
27
+ it_should_behave_like "assert_equal"
28
+ end
29
+
30
+ describe "A controller spec should be able to access 'test/unit' assertions", :type => :controller do
31
+ controller_name :controller_spec
32
+ it_should_behave_like "assert_equal"
33
+ end