rspec-rails 1.1.12 → 1.2.0

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 (124) hide show
  1. data/.document +7 -0
  2. data/History.txt +55 -0
  3. data/License.txt +1 -1
  4. data/Manifest.txt +53 -48
  5. data/README.txt +5 -4
  6. data/Rakefile +9 -2
  7. data/TODO.txt +1 -0
  8. data/Upgrade.markdown +103 -0
  9. data/generators/rspec/rspec_generator.rb +1 -0
  10. data/generators/rspec/templates/rspec.rake +134 -111
  11. data/generators/rspec/templates/script/autospec +1 -0
  12. data/generators/rspec/templates/script/spec +21 -4
  13. data/generators/rspec/templates/script/spec_server +34 -107
  14. data/generators/rspec/templates/spec_helper.rb +1 -1
  15. data/generators/rspec_controller/rspec_controller_generator.rb +1 -5
  16. data/generators/rspec_scaffold/rspec_scaffold_generator.rb +13 -17
  17. data/generators/rspec_scaffold/templates/controller_spec.rb +27 -29
  18. data/generators/rspec_scaffold/templates/edit_erb_spec.rb +2 -2
  19. data/generators/rspec_scaffold/templates/helper_spec.rb +1 -1
  20. data/generators/rspec_scaffold/templates/index_erb_spec.rb +2 -2
  21. data/generators/rspec_scaffold/templates/new_erb_spec.rb +2 -2
  22. data/generators/rspec_scaffold/templates/routing_spec.rb +24 -20
  23. data/generators/rspec_scaffold/templates/show_erb_spec.rb +2 -2
  24. data/lib/spec/rails.rb +10 -9
  25. data/lib/spec/rails/example.rb +2 -2
  26. data/lib/spec/rails/example/assigns_hash_proxy.rb +1 -2
  27. data/lib/spec/rails/example/controller_example_group.rb +117 -123
  28. data/lib/spec/rails/example/functional_example_group.rb +7 -22
  29. data/lib/spec/rails/example/helper_example_group.rb +15 -33
  30. data/lib/spec/rails/example/model_example_group.rb +1 -1
  31. data/lib/spec/rails/example/render_observer.rb +0 -26
  32. data/lib/spec/rails/example/routing_example_group.rb +13 -0
  33. data/lib/spec/rails/example/routing_helpers.rb +68 -0
  34. data/lib/spec/rails/example/view_example_group.rb +50 -47
  35. data/lib/spec/rails/extensions.rb +2 -1
  36. data/lib/spec/rails/extensions/action_controller/rescue.rb +25 -8
  37. data/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
  38. data/lib/spec/rails/extensions/action_controller/test_response.rb +4 -3
  39. data/lib/spec/rails/extensions/action_view/base.rb +9 -9
  40. data/lib/spec/rails/extensions/active_record/base.rb +39 -23
  41. data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
  42. data/lib/spec/rails/extensions/spec/matchers/have.rb +8 -6
  43. data/lib/spec/rails/extensions/spec/runner/configuration.rb +12 -44
  44. data/lib/spec/rails/matchers/ar_be_valid.rb +8 -5
  45. data/lib/spec/rails/matchers/assert_select.rb +36 -21
  46. data/lib/spec/rails/matchers/have_text.rb +3 -3
  47. data/lib/spec/rails/matchers/include_text.rb +4 -4
  48. data/lib/spec/rails/matchers/redirect_to.rb +30 -19
  49. data/lib/spec/rails/matchers/render_template.rb +7 -3
  50. data/lib/spec/rails/mocks.rb +1 -1
  51. data/lib/spec/rails/spec_server.rb +97 -0
  52. data/lib/spec/rails/story_adapter.rb +4 -4
  53. data/lib/spec/rails/version.rb +2 -2
  54. data/spec/resources/controllers/controller_spec_controller.rb +14 -6
  55. data/spec/resources/controllers/example.txt +1 -0
  56. data/spec/resources/controllers/redirect_spec_controller.rb +4 -0
  57. data/spec/resources/controllers/render_spec_controller.rb +1 -1
  58. data/spec/resources/controllers/rjs_spec_controller.rb +1 -1
  59. data/spec/resources/helpers/explicit_helper.rb +1 -1
  60. data/spec/resources/views/controller_spec/{_partial.rhtml → _partial.html.erb} +0 -0
  61. data/spec/resources/views/controller_spec/{action_setting_flash_after_session_reset.rhtml → action_setting_flash_after_session_reset.html.erb} +0 -0
  62. data/spec/resources/views/controller_spec/{action_setting_flash_before_session_reset.rhtml → action_setting_flash_before_session_reset.html.erb} +0 -0
  63. data/spec/resources/views/controller_spec/{action_setting_the_assigns_hash.rhtml → action_setting_the_assigns_hash.html.erb} +0 -0
  64. data/spec/resources/views/controller_spec/{action_with_errors_in_template.rhtml → action_with_errors_in_template.html.erb} +0 -0
  65. data/spec/resources/views/controller_spec/{action_with_template.rhtml → action_with_template.html.erb} +0 -0
  66. data/spec/resources/views/layouts/{application.rhtml → application.html.erb} +0 -0
  67. data/spec/resources/views/layouts/{simple.rhtml → simple.html.erb} +0 -0
  68. data/spec/resources/views/render_spec/{_a_partial.rhtml → _a_partial.html.erb} +0 -0
  69. data/spec/resources/views/render_spec/{action_with_alternate_layout.rhtml → action_with_alternate_layout.html.erb} +0 -0
  70. data/spec/resources/views/rjs_spec/{_replacement_partial.rhtml → _replacement_partial.html.erb} +0 -0
  71. data/spec/resources/views/rjs_spec/{hide_div.rjs → hide_div.js.rjs} +0 -0
  72. data/spec/resources/views/rjs_spec/{hide_page_element.rjs → hide_page_element.js.rjs} +0 -0
  73. data/spec/resources/views/rjs_spec/{insert_html.rjs → insert_html.js.rjs} +0 -0
  74. data/spec/resources/views/rjs_spec/{replace.rjs → replace.js.rjs} +0 -0
  75. data/spec/resources/views/rjs_spec/{replace_html.rjs → replace_html.js.rjs} +0 -0
  76. data/spec/resources/views/rjs_spec/{replace_html_with_partial.rjs → replace_html_with_partial.js.rjs} +0 -0
  77. data/spec/resources/views/rjs_spec/{visual_effect.rjs → visual_effect.js.rjs} +0 -0
  78. data/spec/resources/views/rjs_spec/{visual_toggle_effect.rjs → visual_toggle_effect.js.rjs} +0 -0
  79. data/spec/resources/views/tag_spec/{no_tags.rhtml → no_tags.html.erb} +0 -0
  80. data/spec/resources/views/tag_spec/{single_div_with_no_attributes.rhtml → single_div_with_no_attributes.html.erb} +0 -0
  81. data/spec/resources/views/tag_spec/{single_div_with_one_attribute.rhtml → single_div_with_one_attribute.html.erb} +0 -0
  82. data/spec/resources/views/view_spec/{_partial.rhtml → _partial.html.erb} +0 -0
  83. data/spec/resources/views/view_spec/{_partial_used_twice.rhtml → _partial_used_twice.html.erb} +0 -0
  84. data/spec/resources/views/view_spec/{_partial_with_local_variable.rhtml → _partial_with_local_variable.html.erb} +0 -0
  85. data/spec/resources/views/view_spec/{_partial_with_sub_partial.rhtml → _partial_with_sub_partial.html.erb} +0 -0
  86. data/spec/resources/views/view_spec/{_spacer.rhtml → _spacer.html.erb} +0 -0
  87. data/spec/resources/views/view_spec/{accessor.rhtml → accessor.html.erb} +0 -0
  88. data/spec/resources/views/view_spec/{block_helper.rhtml → block_helper.html.erb} +0 -0
  89. data/spec/resources/views/view_spec/{entry_form.rhtml → entry_form.html.erb} +0 -0
  90. data/spec/resources/views/view_spec/{explicit_helper.rhtml → explicit_helper.html.erb} +0 -0
  91. data/spec/resources/views/view_spec/foo/{show.rhtml → show.html.erb} +0 -0
  92. data/spec/resources/views/view_spec/{implicit_helper.rhtml → implicit_helper.html.erb} +0 -0
  93. data/spec/resources/views/view_spec/{multiple_helpers.rhtml → multiple_helpers.html.erb} +0 -0
  94. data/spec/resources/views/view_spec/{should_not_receive.rhtml → should_not_receive.html.erb} +0 -0
  95. data/spec/resources/views/view_spec/{template_with_partial.rhtml → template_with_partial.html.erb} +0 -0
  96. data/spec/resources/views/view_spec/{template_with_partial_using_collection.rhtml → template_with_partial_using_collection.html.erb} +0 -0
  97. data/spec/resources/views/view_spec/{template_with_partial_with_array.rhtml → template_with_partial_with_array.html.erb} +0 -0
  98. data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +18 -5
  99. data/spec/spec/rails/example/configuration_spec.rb +15 -29
  100. data/spec/spec/rails/example/{controller_spec_spec.rb → controller_example_group_spec.rb} +40 -96
  101. data/spec/spec/rails/example/cookies_proxy_spec.rb +32 -36
  102. data/spec/spec/rails/example/error_handling_spec.rb +90 -0
  103. data/spec/spec/rails/example/example_group_factory_spec.rb +5 -5
  104. data/spec/spec/rails/example/{helper_spec_spec.rb → helper_example_group_spec.rb} +45 -13
  105. data/spec/spec/rails/example/{model_spec_spec.rb → model_example_group_spec.rb} +3 -1
  106. data/spec/spec/rails/example/routing_example_group_spec.rb +9 -0
  107. data/spec/spec/rails/example/shared_routing_example_group_examples.rb +45 -0
  108. data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +1 -1
  109. data/spec/spec/rails/example/{view_spec_spec.rb → view_example_group_spec.rb} +44 -17
  110. data/spec/spec/rails/matchers/ar_be_valid_spec.rb +10 -0
  111. data/spec/spec/rails/matchers/assert_select_spec.rb +59 -60
  112. data/spec/spec/rails/matchers/have_text_spec.rb +12 -4
  113. data/spec/spec/rails/matchers/include_text_spec.rb +11 -13
  114. data/spec/spec/rails/matchers/redirect_to_spec.rb +224 -189
  115. data/spec/spec/rails/matchers/render_template_spec.rb +169 -158
  116. data/spec/spec/rails/spec_server_spec.rb +18 -7
  117. data/spec/spec_helper.rb +21 -9
  118. metadata +68 -53
  119. data/lib/spec/rails/example/rails_example_group.rb +0 -28
  120. data/lib/spec/rails/extensions/action_controller/base.rb +0 -14
  121. data/rspec-rails.gemspec +0 -36
  122. data/spec/resources/views/render_spec/some_action.rjs +0 -1
  123. data/spec/spec/rails/example/shared_behaviour_spec.rb +0 -16
  124. data/spec/spec/rails/extensions/action_controller_rescue_action_spec.rb +0 -57
@@ -0,0 +1,7 @@
1
+ lib/**/*.rb
2
+ History.txt
3
+ License.txt
4
+ README.txt
5
+ Upgrade.markdown
6
+ features/**/*.feature
7
+
@@ -1,3 +1,58 @@
1
+ === Version 1.1.99.x (in git)
2
+
3
+ IMPORTANT: See Upgrade.markdown for information about upgrading to rspec-rails-1.1.99.4
4
+
5
+ IMPORTANT: This release includes the following backwards-compatibility-breaking changes.
6
+
7
+ * rspec-rails supports rails 2.0.2, 2.1.2 and 2.2.2.
8
+
9
+ * We are no longer supporting 1.x versions of rails.
10
+
11
+ * expect_render and stub_render have been removed.
12
+
13
+ * Both of these methods were deprecated in rspec-rails-1.1.5, released in Sept, 2008.
14
+
15
+ * { route_for(args).should == "/path" } now delegates to assert_generates (in rails)
16
+
17
+ * see Upgrade.txt for more information
18
+
19
+ * deprecations
20
+
21
+ * controller.use_rails_error_handling! is deprecated
22
+ * use rescue_action_in_public! (from rails) instead
23
+
24
+ * enhancements
25
+
26
+ * Adding status codes to redirect_to matcher (Damian Janowski). Closes #570.
27
+ * Initialize current URL before executing any examples in a ViewExampleGroup (Wilson Bilkovich). Closes #654.
28
+ * Support query strings in params_from (Wilson Bilkovich). Closes #652.
29
+ * delegate route_for to assert_recognizes (less brittle)
30
+ * it { should be_valid } (Kakutani). Closes #665.
31
+ * controller is implicit subject in controller specs (Joe Ferris). #686.
32
+ * template is implicit subject in view specs (Joe Ferris). #686.
33
+ * redirect_to and render_template matchers can accept controller or response (Joe Ferris). Closes #686.
34
+ * generated specs use declarative docstrings
35
+ * rspec_scaffold generator generates layout and stylesheet (per Rails-2.3)
36
+ * add bypass_rescue for controller specs
37
+ * infer template path from the first arg passed to describe in view specs
38
+ * separate routing specs (in spec/routing)
39
+
40
+ * bug fixes
41
+
42
+ * you no longer *have* to load ActionMailer to get specs to run. Closes #650.
43
+ * query_params are now parsed by Rack::Utils.parse_query in redirect_to matcher. Closes #684.
44
+ * cleaned up spec_server (there was a bunch of pre-rails 2.0 material). Closes #685.
45
+ * rspec's rake tasks are not loaded when running "rake gems" or any of its subtasks
46
+ * only warn when rspec is not installed when trying to invoke an rspec rake task
47
+ * support 2 arg version of ActionController::Base#render (reported by Nathan Wilmes)
48
+ * rake spec:server:start doesn't choke if there is no tmp directory
49
+ * force cache_classes = false when running with spec_server. Closes #287.
50
+ * keep spec_server working against edge rails (Jonathan Tron). Closes #685.
51
+ * create lib/tasks if not present when running script/generate rspec. Closes #687.
52
+ * fixed regression (and added spec so it won't regress again) where
53
+ render => :inline didn't render unless integrate_views was set
54
+ * fixed nil.with_output_buffer bug in helper specs. Closes #719.
55
+
1
56
  === Version 1.1.12 / 2009-01-11
2
57
 
3
58
  * 2 deprecations
@@ -2,7 +2,7 @@
2
2
 
3
3
  ====================================================================
4
4
  ==== RSpec, RSpec-Rails
5
- Copyright (c) 2005-2008 The RSpec Development Team
5
+ Copyright (c) 2005-2009 The RSpec Development Team
6
6
  ====================================================================
7
7
  ==== ARTS
8
8
  Copyright (c) 2006 Kevin Clark, Jake Howerton
@@ -1,9 +1,11 @@
1
+ .document
1
2
  History.txt
2
3
  License.txt
3
4
  Manifest.txt
4
5
  README.txt
5
6
  Rakefile
6
7
  TODO.txt
8
+ Upgrade.markdown
7
9
  features/step_definitions/people.rb
8
10
  features/support/env.rb
9
11
  features/transactions/transactions_should_rollback.feature
@@ -45,15 +47,17 @@ lib/spec/rails/example/cookies_proxy.rb
45
47
  lib/spec/rails/example/functional_example_group.rb
46
48
  lib/spec/rails/example/helper_example_group.rb
47
49
  lib/spec/rails/example/model_example_group.rb
48
- lib/spec/rails/example/rails_example_group.rb
49
50
  lib/spec/rails/example/render_observer.rb
51
+ lib/spec/rails/example/routing_example_group.rb
52
+ lib/spec/rails/example/routing_helpers.rb
50
53
  lib/spec/rails/example/view_example_group.rb
51
54
  lib/spec/rails/extensions.rb
52
- lib/spec/rails/extensions/action_controller/base.rb
53
55
  lib/spec/rails/extensions/action_controller/rescue.rb
56
+ lib/spec/rails/extensions/action_controller/test_case.rb
54
57
  lib/spec/rails/extensions/action_controller/test_response.rb
55
58
  lib/spec/rails/extensions/action_view/base.rb
56
59
  lib/spec/rails/extensions/active_record/base.rb
60
+ lib/spec/rails/extensions/active_support/test_case.rb
57
61
  lib/spec/rails/extensions/spec/matchers/have.rb
58
62
  lib/spec/rails/extensions/spec/runner/configuration.rb
59
63
  lib/spec/rails/interop/testcase.rb
@@ -66,14 +70,15 @@ lib/spec/rails/matchers/include_text.rb
66
70
  lib/spec/rails/matchers/redirect_to.rb
67
71
  lib/spec/rails/matchers/render_template.rb
68
72
  lib/spec/rails/mocks.rb
73
+ lib/spec/rails/spec_server.rb
69
74
  lib/spec/rails/story_adapter.rb
70
75
  lib/spec/rails/version.rb
71
- rspec-rails.gemspec
72
76
  spec/autotest/mappings_spec.rb
73
77
  spec/rails_suite.rb
74
78
  spec/resources/controllers/action_view_base_spec_controller.rb
75
79
  spec/resources/controllers/application.rb
76
80
  spec/resources/controllers/controller_spec_controller.rb
81
+ spec/resources/controllers/example.txt
77
82
  spec/resources/controllers/redirect_spec_controller.rb
78
83
  spec/resources/controllers/render_spec_controller.rb
79
84
  spec/resources/controllers/rjs_spec_controller.rb
@@ -85,61 +90,61 @@ spec/resources/helpers/view_spec_helper.rb
85
90
  spec/resources/models/animal.rb
86
91
  spec/resources/models/person.rb
87
92
  spec/resources/models/thing.rb
88
- spec/resources/views/controller_spec/_partial.rhtml
89
- spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml
90
- spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml
91
- spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml
92
- spec/resources/views/controller_spec/action_with_errors_in_template.rhtml
93
- spec/resources/views/controller_spec/action_with_template.rhtml
94
- spec/resources/views/layouts/application.rhtml
95
- spec/resources/views/layouts/simple.rhtml
93
+ spec/resources/views/controller_spec/_partial.html.erb
94
+ spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb
95
+ spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb
96
+ spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb
97
+ spec/resources/views/controller_spec/action_with_errors_in_template.html.erb
98
+ spec/resources/views/controller_spec/action_with_template.html.erb
99
+ spec/resources/views/layouts/application.html.erb
100
+ spec/resources/views/layouts/simple.html.erb
96
101
  spec/resources/views/objects/_object.html.erb
97
- spec/resources/views/render_spec/_a_partial.rhtml
98
- spec/resources/views/render_spec/action_with_alternate_layout.rhtml
102
+ spec/resources/views/render_spec/_a_partial.html.erb
103
+ spec/resources/views/render_spec/action_with_alternate_layout.html.erb
99
104
  spec/resources/views/render_spec/some_action.html.erb
100
105
  spec/resources/views/render_spec/some_action.js.rjs
101
- spec/resources/views/render_spec/some_action.rjs
102
- spec/resources/views/rjs_spec/_replacement_partial.rhtml
103
- spec/resources/views/rjs_spec/hide_div.rjs
104
- spec/resources/views/rjs_spec/hide_page_element.rjs
105
- spec/resources/views/rjs_spec/insert_html.rjs
106
- spec/resources/views/rjs_spec/replace.rjs
107
- spec/resources/views/rjs_spec/replace_html.rjs
108
- spec/resources/views/rjs_spec/replace_html_with_partial.rjs
109
- spec/resources/views/rjs_spec/visual_effect.rjs
110
- spec/resources/views/rjs_spec/visual_toggle_effect.rjs
111
- spec/resources/views/tag_spec/no_tags.rhtml
112
- spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml
113
- spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml
114
- spec/resources/views/view_spec/_partial.rhtml
115
- spec/resources/views/view_spec/_partial_used_twice.rhtml
116
- spec/resources/views/view_spec/_partial_with_local_variable.rhtml
117
- spec/resources/views/view_spec/_partial_with_sub_partial.rhtml
118
- spec/resources/views/view_spec/_spacer.rhtml
119
- spec/resources/views/view_spec/accessor.rhtml
120
- spec/resources/views/view_spec/block_helper.rhtml
121
- spec/resources/views/view_spec/entry_form.rhtml
122
- spec/resources/views/view_spec/explicit_helper.rhtml
123
- spec/resources/views/view_spec/foo/show.rhtml
124
- spec/resources/views/view_spec/implicit_helper.rhtml
125
- spec/resources/views/view_spec/multiple_helpers.rhtml
106
+ spec/resources/views/rjs_spec/_replacement_partial.html.erb
107
+ spec/resources/views/rjs_spec/hide_div.js.rjs
108
+ spec/resources/views/rjs_spec/hide_page_element.js.rjs
109
+ spec/resources/views/rjs_spec/insert_html.js.rjs
110
+ spec/resources/views/rjs_spec/replace.js.rjs
111
+ spec/resources/views/rjs_spec/replace_html.js.rjs
112
+ spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs
113
+ spec/resources/views/rjs_spec/visual_effect.js.rjs
114
+ spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs
115
+ spec/resources/views/tag_spec/no_tags.html.erb
116
+ spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb
117
+ spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb
118
+ spec/resources/views/view_spec/_partial.html.erb
119
+ spec/resources/views/view_spec/_partial_used_twice.html.erb
120
+ spec/resources/views/view_spec/_partial_with_local_variable.html.erb
121
+ spec/resources/views/view_spec/_partial_with_sub_partial.html.erb
122
+ spec/resources/views/view_spec/_spacer.html.erb
123
+ spec/resources/views/view_spec/accessor.html.erb
124
+ spec/resources/views/view_spec/block_helper.html.erb
125
+ spec/resources/views/view_spec/entry_form.html.erb
126
+ spec/resources/views/view_spec/explicit_helper.html.erb
127
+ spec/resources/views/view_spec/foo/show.html.erb
128
+ spec/resources/views/view_spec/implicit_helper.html.erb
129
+ spec/resources/views/view_spec/multiple_helpers.html.erb
126
130
  spec/resources/views/view_spec/path_params.html.erb
127
- spec/resources/views/view_spec/should_not_receive.rhtml
128
- spec/resources/views/view_spec/template_with_partial.rhtml
129
- spec/resources/views/view_spec/template_with_partial_using_collection.rhtml
130
- spec/resources/views/view_spec/template_with_partial_with_array.rhtml
131
+ spec/resources/views/view_spec/should_not_receive.html.erb
132
+ spec/resources/views/view_spec/template_with_partial.html.erb
133
+ spec/resources/views/view_spec/template_with_partial_using_collection.html.erb
134
+ spec/resources/views/view_spec/template_with_partial_with_array.html.erb
131
135
  spec/spec/rails/example/assigns_hash_proxy_spec.rb
132
136
  spec/spec/rails/example/configuration_spec.rb
137
+ spec/spec/rails/example/controller_example_group_spec.rb
133
138
  spec/spec/rails/example/controller_isolation_spec.rb
134
- spec/spec/rails/example/controller_spec_spec.rb
135
139
  spec/spec/rails/example/cookies_proxy_spec.rb
140
+ spec/spec/rails/example/error_handling_spec.rb
136
141
  spec/spec/rails/example/example_group_factory_spec.rb
137
- spec/spec/rails/example/helper_spec_spec.rb
138
- spec/spec/rails/example/model_spec_spec.rb
139
- spec/spec/rails/example/shared_behaviour_spec.rb
142
+ spec/spec/rails/example/helper_example_group_spec.rb
143
+ spec/spec/rails/example/model_example_group_spec.rb
144
+ spec/spec/rails/example/routing_example_group_spec.rb
145
+ spec/spec/rails/example/shared_routing_example_group_examples.rb
140
146
  spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
141
- spec/spec/rails/example/view_spec_spec.rb
142
- spec/spec/rails/extensions/action_controller_rescue_action_spec.rb
147
+ spec/spec/rails/example/view_example_group_spec.rb
143
148
  spec/spec/rails/extensions/action_view_base_spec.rb
144
149
  spec/spec/rails/extensions/active_record_spec.rb
145
150
  spec/spec/rails/interop/testcase_spec.rb
data/README.txt CHANGED
@@ -2,15 +2,16 @@
2
2
 
3
3
  * http://rspec.info
4
4
  * http://rubyforge.org/projects/rspec
5
- * http://github.com/dchelimsky/rspec-rails/wikis
5
+ * http://github.com/dchelimsky/rspec-rails
6
+ * http://wiki.github.com/dchelimsky/rspec/rails
6
7
  * mailto:rspec-devel@rubyforge.org
7
8
 
8
9
  == DESCRIPTION:
9
10
 
10
11
  Behaviour Driven Development for Ruby on Rails.
11
12
 
12
- Spec::Rails (a.k.a. RSpec on Rails) is an RSpec extension that allows you
13
- to drive the development of your RoR application using RSpec.
13
+ rspec-rails is an RSpec extension that allows you to drive the development of
14
+ Ruby on Rails applications with RSpec.
14
15
 
15
16
  == FEATURES:
16
17
 
@@ -41,4 +42,4 @@ expectations you can set on responses and models, etc.
41
42
 
42
43
  == INSTALL
43
44
 
44
- * Visit http://github.com/dchelimsky/rspec-rails/wikis for installation instructions.
45
+ * Visit http://wiki.github.com/dchelimsky/rspec/rails for installation instructions.
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ Hoe.new('rspec-rails', Spec::Rails::VERSION::STRING) do |p|
20
20
  p.description = "Behaviour Driven Development for Ruby on Rails."
21
21
  p.rubyforge_name = 'rspec'
22
22
  p.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
23
- p.extra_deps = [["rspec","1.1.12"]]
23
+ p.extra_deps = [["rspec","1.2.0"],["rack",">=0.4.0"]]
24
24
  p.extra_dev_deps = [["cucumber",">= 0.1.13"]]
25
25
  p.remote_rdoc_dir = "rspec-rails/#{Spec::Rails::VERSION::STRING}"
26
26
  end
@@ -48,4 +48,11 @@ Spec::Rake::SpecTask.new
48
48
 
49
49
  Cucumber::Rake::Task.new
50
50
 
51
- task :default => [:features]
51
+ task :default => [:features]
52
+
53
+ namespace :update do
54
+ desc "update the manfest"
55
+ task :manifest do
56
+ system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
57
+ end
58
+ end
data/TODO.txt CHANGED
@@ -0,0 +1 @@
1
+ * delegate params_from to assert_recognizes
@@ -0,0 +1,103 @@
1
+ # Upgrade to rspec-rails-1.1.99.x (pre rspec-rails-1.2)
2
+
3
+ ## What's changed
4
+
5
+ ### Supported Rails Versions
6
+
7
+ This release supports the following versions of rails:
8
+
9
+ * 2.0.5
10
+ * 2.1.2
11
+ * 2.2.2
12
+ * 2.3.1
13
+
14
+ ### update generated files
15
+
16
+ Be sure to run "script/generate rspec" and allow the following files to be overwritten:
17
+
18
+ * lib/tasks/rspec.rake
19
+ * script/spec
20
+ * script/spec_server
21
+
22
+ ### ``controller.use_rails_error_handling!`` is deprecated
23
+
24
+ Use ``rescue_action_in_public!`` instead. It comes directly from rails and does
25
+ exactly the same thing
26
+
27
+ ### route_for
28
+
29
+ After a change to edge rails broke our monkey-patched ``route_for`` method, I
30
+ decided to just delegate to rails' ``assert_generates`` method. For most cases,
31
+ this will not present a problem, but for some it might. You'll know if you
32
+ upgrade and see any newly failing, route-related examples. Here are the things
33
+ that you might need to change.
34
+
35
+ #### Make sure IDs are strings
36
+
37
+ If you had :id => 1 before, you need to change that to :id => "1"
38
+
39
+ #old
40
+ route_for(:controller => 'things', :action => 'show', :id => 1).should == "/things/1"
41
+
42
+ #new
43
+ route_for(:controller => 'things', :action => 'show', :id => "1").should == "/things/1"
44
+
45
+ #### Convert paths for non-get methods to hashes
46
+
47
+ If you had an example with a route that requires post, put, or delete, you'll
48
+ need to declare that explicitly.
49
+
50
+ #old
51
+ route_for(:controller => 'things', :action => 'create').should == "/things"
52
+
53
+ #new
54
+ route_for(:controller => 'things', :action => 'create').should == {:path => "/things", :method => :post}
55
+
56
+ ### Controller/template isolation
57
+
58
+ Even though controller specs do not render views by default (use
59
+ ``integrate_views`` to get them to render views), the way this works has
60
+ changed in this version.
61
+
62
+ It used to be that the view template need not even exist, but due to changes
63
+ in rails it became much more difficult to manage that for all the different
64
+ versions of rails that rspec-rails supports. So now the template must exist,
65
+ but it still won't be rendered unless you declare ``integrate_views``.
66
+
67
+ ## What's new
68
+
69
+ ### render no longer requires a path
70
+
71
+ The ``render()`` method in view specs will infer the path from the
72
+ first argument passed to ``describe()``.
73
+
74
+ describe "players/show" do
75
+ it "does something" do
76
+ render
77
+ response.should have_tag("....")
78
+ end
79
+ end
80
+
81
+ ### routing specs live in spec/routing
82
+
83
+ ``script/generate rspec_scaffold`` now generates its routing spec in
84
+ ``spec/routing/``.
85
+
86
+ ### bypass_rescue
87
+
88
+ Added a new ``bypass_rescue()`` declaration for controller specs. Use this
89
+ when you want to specify that an error is raised by an action, even if that
90
+ error is later captured by a ``rescue_from()`` declaration.
91
+
92
+ describe AccountController do
93
+ describe "GET @account" do
94
+ context "requested by anonymous user" do
95
+ it "denies access" do
96
+ bypass_rescue
97
+ lambda do
98
+ get :show, :id => "37"
99
+ end.should raise_error(AccessDenied)
100
+ end
101
+ end
102
+ end
103
+ end
@@ -14,6 +14,7 @@ class RspecGenerator < Rails::Generator::Base
14
14
  record do |m|
15
15
  script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
16
16
 
17
+ m.directory 'lib/tasks'
17
18
  m.file 'rspec.rake', 'lib/tasks/rspec.rake'
18
19
 
19
20
  m.file 'script/autospec', 'script/autospec', script_options
@@ -1,3 +1,4 @@
1
+ gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
1
2
  rspec_gem_dir = nil
2
3
  Dir["#{RAILS_ROOT}/vendor/gems/*"].each do |subdir|
3
4
  rspec_gem_dir = subdir if subdir.gsub("#{RAILS_ROOT}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb")
@@ -14,145 +15,167 @@ elsif File.exist?(rspec_plugin_dir)
14
15
  $LOAD_PATH.unshift("#{rspec_plugin_dir}/lib")
15
16
  end
16
17
 
18
+ # Don't load rspec if running "rake gems:*"
19
+ unless ARGV.any? {|a| a =~ /^gems/}
20
+
17
21
  begin
18
22
  require 'spec/rake/spectask'
19
- Rake.application.instance_variable_get('@tasks').delete('default')
20
-
21
- spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop
22
- task :noop do
23
+ rescue MissingSourceFile
24
+ module Spec
25
+ module Rake
26
+ class SpecTask
27
+ def initialize(name)
28
+ task name do
29
+ # if rspec-rails is a configured gem, this will output helpful material and exit ...
30
+ require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
31
+
32
+ # ... otherwise, do this:
33
+ raise <<-MSG
34
+
35
+ #{"*" * 80}
36
+ * You are trying to run an rspec rake task defined in
37
+ * #{__FILE__},
38
+ * but rspec can not be found in vendor/gems, vendor/plugins or system gems.
39
+ #{"*" * 80}
40
+ MSG
41
+ end
42
+ end
43
+ end
44
+ end
23
45
  end
46
+ end
47
+
48
+ Rake.application.instance_variable_get('@tasks').delete('default')
49
+
50
+ spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop
51
+ task :noop do
52
+ end
24
53
 
25
- task :default => :spec
26
- task :stats => "spec:statsetup"
54
+ task :default => :spec
55
+ task :stats => "spec:statsetup"
27
56
 
28
- desc "Run all specs in spec directory (excluding plugin specs)"
29
- Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t|
57
+ desc "Run all specs in spec directory (excluding plugin specs)"
58
+ Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t|
59
+ t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
60
+ t.spec_files = FileList['spec/**/*/*_spec.rb']
61
+ end
62
+
63
+ namespace :spec do
64
+ desc "Run all specs in spec directory with RCov (excluding plugin specs)"
65
+ Spec::Rake::SpecTask.new(:rcov) do |t|
30
66
  t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
31
67
  t.spec_files = FileList['spec/**/*/*_spec.rb']
68
+ t.rcov = true
69
+ t.rcov_opts = lambda do
70
+ IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
71
+ end
32
72
  end
33
73
 
34
- namespace :spec do
35
- desc "Run all specs in spec directory with RCov (excluding plugin specs)"
36
- Spec::Rake::SpecTask.new(:rcov) do |t|
37
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
38
- t.spec_files = FileList['spec/**/*/*_spec.rb']
39
- t.rcov = true
40
- t.rcov_opts = lambda do
41
- IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
42
- end
43
- end
74
+ desc "Print Specdoc for all specs (excluding plugin specs)"
75
+ Spec::Rake::SpecTask.new(:doc) do |t|
76
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
77
+ t.spec_files = FileList['spec/**/*/*_spec.rb']
78
+ end
44
79
 
45
- desc "Print Specdoc for all specs (excluding plugin specs)"
46
- Spec::Rake::SpecTask.new(:doc) do |t|
47
- t.spec_opts = ["--format", "specdoc", "--dry-run"]
48
- t.spec_files = FileList['spec/**/*/*_spec.rb']
49
- end
80
+ desc "Print Specdoc for all plugin examples"
81
+ Spec::Rake::SpecTask.new(:plugin_doc) do |t|
82
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
83
+ t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*')
84
+ end
50
85
 
51
- desc "Print Specdoc for all plugin examples"
52
- Spec::Rake::SpecTask.new(:plugin_doc) do |t|
53
- t.spec_opts = ["--format", "specdoc", "--dry-run"]
54
- t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*')
86
+ [:models, :controllers, :views, :helpers, :lib].each do |sub|
87
+ desc "Run the code examples in spec/#{sub}"
88
+ Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
89
+ t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
90
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
55
91
  end
92
+ end
56
93
 
57
- [:models, :controllers, :views, :helpers, :lib].each do |sub|
58
- desc "Run the code examples in spec/#{sub}"
59
- Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
60
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
61
- t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
62
- end
63
- end
94
+ desc "Run the code examples in vendor/plugins (except RSpec's own)"
95
+ Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t|
96
+ t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
97
+ t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*")
98
+ end
64
99
 
65
- desc "Run the code examples in vendor/plugins (except RSpec's own)"
66
- Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t|
100
+ namespace :plugins do
101
+ desc "Runs the examples for rspec_on_rails"
102
+ Spec::Rake::SpecTask.new(:rspec_on_rails) do |t|
67
103
  t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
68
- t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*")
69
- end
70
-
71
- namespace :plugins do
72
- desc "Runs the examples for rspec_on_rails"
73
- Spec::Rake::SpecTask.new(:rspec_on_rails) do |t|
74
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
75
- t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb']
76
- end
104
+ t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb']
77
105
  end
106
+ end
78
107
 
79
- # Setup specs for stats
80
- task :statsetup do
81
- require 'code_statistics'
82
- ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
83
- ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
84
- ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
85
- ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
86
- ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
87
- ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
88
- ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
89
- ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
90
- ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
91
- ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
92
- ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
93
- end
108
+ # Setup specs for stats
109
+ task :statsetup do
110
+ require 'code_statistics'
111
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
112
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
113
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
114
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
115
+ ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
116
+ ::STATS_DIRECTORIES << %w(Routing\ specs spec/lib) if File.exist?('spec/routing')
117
+ ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
118
+ ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
119
+ ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
120
+ ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
121
+ ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
122
+ ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
123
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
124
+ end
94
125
 
95
- namespace :db do
96
- namespace :fixtures do
97
- desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z."
98
- task :load => :environment do
99
- ActiveRecord::Base.establish_connection(Rails.env)
100
- base_dir = File.join(Rails.root, 'spec', 'fixtures')
101
- fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir
102
-
103
- (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file|
104
- Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
105
- end
126
+ namespace :db do
127
+ namespace :fixtures do
128
+ desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z."
129
+ task :load => :environment do
130
+ ActiveRecord::Base.establish_connection(Rails.env)
131
+ base_dir = File.join(Rails.root, 'spec', 'fixtures')
132
+ fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir
133
+
134
+ require 'active_record/fixtures'
135
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file|
136
+ Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
106
137
  end
107
138
  end
108
139
  end
140
+ end
109
141
 
110
- namespace :server do
111
- daemonized_server_pid = File.expand_path("spec_server.pid", RAILS_ROOT + "/tmp")
112
-
113
- desc "start spec_server."
114
- task :start do
115
- if File.exist?(daemonized_server_pid)
116
- $stderr.puts "spec_server is already running."
117
- else
118
- $stderr.puts "Starting up spec server."
119
- system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid)
120
- end
142
+ namespace :server do
143
+ daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/pids/spec_server.pid")
144
+
145
+ desc "start spec_server."
146
+ task :start do
147
+ if File.exist?(daemonized_server_pid)
148
+ $stderr.puts "spec_server is already running."
149
+ else
150
+ $stderr.puts %Q{Starting up spec_server ...}
151
+ FileUtils.mkdir_p('tmp/pids') unless test ?d, 'tmp/pids'
152
+ system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid)
121
153
  end
154
+ end
122
155
 
123
- desc "stop spec_server."
124
- task :stop do
125
- unless File.exist?(daemonized_server_pid)
126
- $stderr.puts "No server running."
127
- else
128
- $stderr.puts "Shutting down spec_server."
129
- system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) &&
130
- File.delete(daemonized_server_pid)
131
- end
156
+ desc "stop spec_server."
157
+ task :stop do
158
+ unless File.exist?(daemonized_server_pid)
159
+ $stderr.puts "No server running."
160
+ else
161
+ $stderr.puts "Shutting down spec_server ..."
162
+ system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) &&
163
+ File.delete(daemonized_server_pid)
132
164
  end
165
+ end
133
166
 
134
- desc "reload spec_server."
135
- task :restart do
136
- unless File.exist?(daemonized_server_pid)
137
- $stderr.puts "No server running."
138
- else
139
- $stderr.puts "Reloading down spec_server."
140
- system("kill", "-s", "USR2", File.read(daemonized_server_pid).strip)
141
- end
167
+ desc "restart spec_server."
168
+ task :restart => [:stop, :start]
169
+
170
+ desc "check if spec server is running"
171
+ task :status do
172
+ if File.exist?(daemonized_server_pid)
173
+ $stderr.puts %Q{spec_server is running (PID: #{File.read(daemonized_server_pid).gsub("\n","")})}
174
+ else
175
+ $stderr.puts "No server running."
142
176
  end
143
177
  end
144
178
  end
145
- rescue MissingSourceFile
146
- # if rspec-rails is a configured gem, this will output helpful material and exit ...
147
- require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
148
-
149
- # ... otherwise, do this:
150
- raise <<-MSG
151
-
152
- You have rspec rake tasks installed in
153
- #{__FILE__},
154
- but rspec can not be found in vendor/gems, vendor/plugins or on the system.
155
-
156
- MSG
157
179
  end
158
180
 
181
+ end