rspec-rails 1.1.12 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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