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,97 @@
1
+ require 'drb/drb'
2
+ require 'rbconfig'
3
+
4
+ # This is based on Florian Weber's TDDMate
5
+ module Spec
6
+ module Rails
7
+ class SpecServer
8
+ class << self
9
+ def restart_test_server
10
+ puts "restarting"
11
+ config = ::Config::CONFIG
12
+ ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
13
+ command_line = [ruby, $0, ARGV].flatten.join(' ')
14
+ exec(command_line)
15
+ end
16
+
17
+ def daemonize(pid_file = nil)
18
+ return yield if $DEBUG
19
+ pid = Process.fork{
20
+ Process.setsid
21
+ Dir.chdir(RAILS_ROOT)
22
+ trap("SIGINT"){ exit! 0 }
23
+ trap("SIGTERM"){ exit! 0 }
24
+ trap("SIGHUP"){ restart_test_server }
25
+ File.open("/dev/null"){|f|
26
+ STDERR.reopen f
27
+ STDIN.reopen f
28
+ STDOUT.reopen f
29
+ }
30
+ run
31
+ }
32
+ puts "spec_server launched (PID: %d)" % pid
33
+ File.open(pid_file,"w"){|f| f.puts pid } if pid_file
34
+ exit! 0
35
+ end
36
+
37
+ def run
38
+ trap("USR2") { ::Spec::Rails::SpecServer.restart_test_server } if Signal.list.has_key?("USR2")
39
+ DRb.start_service("druby://127.0.0.1:8989", ::Spec::Rails::SpecServer.new)
40
+ DRb.thread.join
41
+ end
42
+ end
43
+
44
+ def run(argv, stderr, stdout)
45
+ $stdout = stdout
46
+ $stderr = stderr
47
+
48
+ ::Rails::Configuration.extend Module.new {def cache_classes; false; end}
49
+
50
+ ::ActiveSupport.const_defined?(:Dependencies) ?
51
+ ::ActiveSupport::Dependencies.mechanism = :load :
52
+ ::Dependencies.mechanism = :load
53
+
54
+ require 'action_controller/dispatcher'
55
+ dispatcher = ::ActionController::Dispatcher.new($stdout)
56
+
57
+ if ::ActionController::Dispatcher.respond_to?(:reload_application)
58
+ ::ActionController::Dispatcher.reload_application
59
+ else
60
+ dispatcher.reload_application
61
+ end
62
+
63
+ if Object.const_defined?(:Fixtures) && Fixtures.respond_to?(:reset_cache)
64
+ Fixtures.reset_cache
65
+ end
66
+
67
+ unless Object.const_defined?(:ApplicationController)
68
+ %w(application_controller.rb application.rb).each do |name|
69
+ require_dependency(name) if File.exists?("#{RAILS_ROOT}/app/controllers/#{name}")
70
+ end
71
+ end
72
+ load "#{RAILS_ROOT}/spec/spec_helper.rb"
73
+
74
+ if in_memory_database?
75
+ load "#{RAILS_ROOT}/db/schema.rb"
76
+ ActiveRecord::Migrator.up('db/migrate')
77
+ end
78
+
79
+ ::Spec::Runner::CommandLine.run(
80
+ ::Spec::Runner::OptionParser.parse(
81
+ argv,
82
+ $stderr,
83
+ $stdout
84
+ )
85
+ )
86
+
87
+ dispatcher.cleanup_application if dispatcher.respond_to?(:cleanup_application)
88
+ end
89
+
90
+ def in_memory_database?
91
+ ENV["RAILS_ENV"] == "test" and
92
+ ::ActiveRecord::Base.connection.class.to_s == "ActiveRecord::ConnectionAdapters::SQLite3Adapter" and
93
+ ::Rails::Configuration.new.database_configuration['test']['database'] == ':memory:'
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,79 @@
1
+ # WARNING - THIS IS PURELY EXPERIMENTAL AT THIS POINT
2
+ # Courtesy of Brian Takita and Yurii Rashkovskii
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. .. .. .. rspec lib])
5
+ if defined?(ActiveRecord::Base)
6
+ require 'test_help'
7
+ else
8
+ require 'action_controller/test_process'
9
+ require 'action_controller/integration'
10
+ end
11
+ require 'test/unit/testresult'
12
+ require 'spec'
13
+ require 'spec/rails'
14
+
15
+ Test::Unit.run = true
16
+
17
+ ActionController::Integration::Session.__send__ :include, Spec::Matchers
18
+ ActionController::Integration::Session.__send__ :include, Spec::Rails::Matchers
19
+
20
+ class RailsStory < ActionController::IntegrationTest
21
+ if defined?(ActiveRecord::Base)
22
+ self.use_transactional_fixtures = true
23
+ else
24
+ def self.fixture_table_names; []; end # Workaround for projects that don't use ActiveRecord
25
+ end
26
+
27
+ def initialize #:nodoc:
28
+ # TODO - eliminate this hack, which is here to stop
29
+ # Rails Stories from dumping the example summary.
30
+ Spec::Runner::Options.class_eval do
31
+ def examples_should_be_run?
32
+ false
33
+ end
34
+ end
35
+ @_result = Test::Unit::TestResult.new
36
+ end
37
+ end
38
+
39
+ class ActiveRecordSafetyListener
40
+ include Singleton
41
+ def scenario_started(*args)
42
+ if defined?(ActiveRecord::Base)
43
+ if ActiveRecord::Base.connection.respond_to?(:increment_open_transactions)
44
+ ActiveRecord::Base.connection.increment_open_transactions
45
+ else
46
+ ActiveRecord::Base.__send__ :increment_open_transactions
47
+ end
48
+ end
49
+ ActiveRecord::Base.connection.begin_db_transaction
50
+ end
51
+
52
+ def scenario_succeeded(*args)
53
+ if defined?(ActiveRecord::Base)
54
+ ActiveRecord::Base.connection.rollback_db_transaction
55
+ if ActiveRecord::Base.connection.respond_to?(:decrement_open_transactions)
56
+ ActiveRecord::Base.connection.decrement_open_transactions
57
+ else
58
+ ActiveRecord::Base.__send__ :decrement_open_transactions
59
+ end
60
+ end
61
+ end
62
+ alias :scenario_pending :scenario_succeeded
63
+ alias :scenario_failed :scenario_succeeded
64
+ end
65
+
66
+ class Spec::Story::Runner::ScenarioRunner
67
+ def initialize
68
+ @listeners = [ActiveRecordSafetyListener.instance]
69
+ end
70
+ end
71
+
72
+ class Spec::Story::GivenScenario
73
+ def perform(instance, name = nil)
74
+ scenario = Spec::Story::Runner::StoryRunner.scenario_from_current_story @name
75
+ runner = Spec::Story::Runner::ScenarioRunner.new
76
+ runner.instance_variable_set(:@listeners,[])
77
+ runner.run(scenario, instance)
78
+ end
79
+ end
@@ -0,0 +1,16 @@
1
+ module Spec
2
+ module Rails
3
+ module VERSION #:nodoc:
4
+ unless defined? MAJOR
5
+ MAJOR = 1
6
+ MINOR = 1
7
+ TINY = 99
8
+ MINESCULE = 9
9
+
10
+ STRING = [MAJOR, MINOR, TINY, MINESCULE].compact.join('.')
11
+
12
+ SUMMARY = "rspec-rails #{STRING}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{rspec-rails}
5
+ s.version = "1.1.99.9"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["RSpec Development Team"]
9
+ s.date = %q{2009-02-24}
10
+ s.description = %q{Behaviour Driven Development for Ruby on Rails.}
11
+ s.email = ["rspec-devel@rubyforge.org"]
12
+ s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "TODO.txt", "generators/rspec/templates/previous_failures.txt"]
13
+ s.files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "Rakefile", "TODO.txt", "Upgrade.markdown", "features/step_definitions/people.rb", "features/support/env.rb", "features/transactions/transactions_should_rollback.feature", "generators/rspec/CHANGES", "generators/rspec/rspec_generator.rb", "generators/rspec/templates/previous_failures.txt", "generators/rspec/templates/rcov.opts", "generators/rspec/templates/rspec.rake", "generators/rspec/templates/script/autospec", "generators/rspec/templates/script/spec", "generators/rspec/templates/script/spec_server", "generators/rspec/templates/spec.opts", "generators/rspec/templates/spec_helper.rb", "generators/rspec_controller/USAGE", "generators/rspec_controller/rspec_controller_generator.rb", "generators/rspec_controller/templates/controller_spec.rb", "generators/rspec_controller/templates/helper_spec.rb", "generators/rspec_controller/templates/view_spec.rb", "generators/rspec_default_values.rb", "generators/rspec_model/USAGE", "generators/rspec_model/rspec_model_generator.rb", "generators/rspec_model/templates/model_spec.rb", "generators/rspec_scaffold/rspec_scaffold_generator.rb", "generators/rspec_scaffold/templates/controller_spec.rb", "generators/rspec_scaffold/templates/edit_erb_spec.rb", "generators/rspec_scaffold/templates/helper_spec.rb", "generators/rspec_scaffold/templates/index_erb_spec.rb", "generators/rspec_scaffold/templates/new_erb_spec.rb", "generators/rspec_scaffold/templates/routing_spec.rb", "generators/rspec_scaffold/templates/show_erb_spec.rb", "init.rb", "lib/autotest/discover.rb", "lib/autotest/rails_rspec.rb", "lib/spec/rails.rb", "lib/spec/rails/example.rb", "lib/spec/rails/example/assigns_hash_proxy.rb", "lib/spec/rails/example/controller_example_group.rb", "lib/spec/rails/example/cookies_proxy.rb", "lib/spec/rails/example/functional_example_group.rb", "lib/spec/rails/example/helper_example_group.rb", "lib/spec/rails/example/model_example_group.rb", "lib/spec/rails/example/render_observer.rb", "lib/spec/rails/example/routing_helpers.rb", "lib/spec/rails/example/view_example_group.rb", "lib/spec/rails/extensions.rb", "lib/spec/rails/extensions/action_controller/rescue.rb", "lib/spec/rails/extensions/action_controller/test_case.rb", "lib/spec/rails/extensions/action_controller/test_response.rb", "lib/spec/rails/extensions/action_view/base.rb", "lib/spec/rails/extensions/active_record/base.rb", "lib/spec/rails/extensions/active_support/test_case.rb", "lib/spec/rails/extensions/spec/matchers/have.rb", "lib/spec/rails/extensions/spec/runner/configuration.rb", "lib/spec/rails/interop/testcase.rb", "lib/spec/rails/matchers.rb", "lib/spec/rails/matchers/ar_be_valid.rb", "lib/spec/rails/matchers/assert_select.rb", "lib/spec/rails/matchers/change.rb", "lib/spec/rails/matchers/have_text.rb", "lib/spec/rails/matchers/include_text.rb", "lib/spec/rails/matchers/redirect_to.rb", "lib/spec/rails/matchers/render_template.rb", "lib/spec/rails/mocks.rb", "lib/spec/rails/spec_server.rb", "lib/spec/rails/story_adapter.rb", "lib/spec/rails/version.rb", "rspec-rails.gemspec", "spec/autotest/mappings_spec.rb", "spec/rails_suite.rb", "spec/resources/controllers/action_view_base_spec_controller.rb", "spec/resources/controllers/application.rb", "spec/resources/controllers/controller_spec_controller.rb", "spec/resources/controllers/redirect_spec_controller.rb", "spec/resources/controllers/render_spec_controller.rb", "spec/resources/controllers/rjs_spec_controller.rb", "spec/resources/helpers/addition_helper.rb", "spec/resources/helpers/explicit_helper.rb", "spec/resources/helpers/more_explicit_helper.rb", "spec/resources/helpers/plugin_application_helper.rb", "spec/resources/helpers/view_spec_helper.rb", "spec/resources/models/animal.rb", "spec/resources/models/person.rb", "spec/resources/models/thing.rb", "spec/resources/views/controller_spec/_partial.rhtml", "spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml", "spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml", "spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml", "spec/resources/views/controller_spec/action_with_errors_in_template.rhtml", "spec/resources/views/controller_spec/action_with_template.rhtml", "spec/resources/views/layouts/application.rhtml", "spec/resources/views/layouts/simple.rhtml", "spec/resources/views/objects/_object.html.erb", "spec/resources/views/render_spec/_a_partial.rhtml", "spec/resources/views/render_spec/action_with_alternate_layout.rhtml", "spec/resources/views/render_spec/some_action.html.erb", "spec/resources/views/render_spec/some_action.js.rjs", "spec/resources/views/render_spec/some_action.rjs", "spec/resources/views/rjs_spec/_replacement_partial.rhtml", "spec/resources/views/rjs_spec/hide_div.rjs", "spec/resources/views/rjs_spec/hide_page_element.rjs", "spec/resources/views/rjs_spec/insert_html.rjs", "spec/resources/views/rjs_spec/replace.rjs", "spec/resources/views/rjs_spec/replace_html.rjs", "spec/resources/views/rjs_spec/replace_html_with_partial.rjs", "spec/resources/views/rjs_spec/visual_effect.rjs", "spec/resources/views/rjs_spec/visual_toggle_effect.rjs", "spec/resources/views/tag_spec/no_tags.rhtml", "spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml", "spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml", "spec/resources/views/view_spec/_partial.rhtml", "spec/resources/views/view_spec/_partial_used_twice.rhtml", "spec/resources/views/view_spec/_partial_with_local_variable.rhtml", "spec/resources/views/view_spec/_partial_with_sub_partial.rhtml", "spec/resources/views/view_spec/_spacer.rhtml", "spec/resources/views/view_spec/accessor.rhtml", "spec/resources/views/view_spec/block_helper.rhtml", "spec/resources/views/view_spec/entry_form.rhtml", "spec/resources/views/view_spec/explicit_helper.rhtml", "spec/resources/views/view_spec/foo/show.rhtml", "spec/resources/views/view_spec/implicit_helper.rhtml", "spec/resources/views/view_spec/multiple_helpers.rhtml", "spec/resources/views/view_spec/path_params.html.erb", "spec/resources/views/view_spec/should_not_receive.rhtml", "spec/resources/views/view_spec/template_with_partial.rhtml", "spec/resources/views/view_spec/template_with_partial_using_collection.rhtml", "spec/resources/views/view_spec/template_with_partial_with_array.rhtml", "spec/spec/rails/example/assigns_hash_proxy_spec.rb", "spec/spec/rails/example/configuration_spec.rb", "spec/spec/rails/example/controller_example_group_spec.rb", "spec/spec/rails/example/controller_isolation_spec.rb", "spec/spec/rails/example/cookies_proxy_spec.rb", "spec/spec/rails/example/error_handling_spec.rb", "spec/spec/rails/example/example_group_factory_spec.rb", "spec/spec/rails/example/helper_example_group_spec.rb", "spec/spec/rails/example/model_example_group_spec.rb", "spec/spec/rails/example/shared_behaviour_spec.rb", "spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb", "spec/spec/rails/example/view_example_group_spec.rb", "spec/spec/rails/extensions/action_view_base_spec.rb", "spec/spec/rails/extensions/active_record_spec.rb", "spec/spec/rails/interop/testcase_spec.rb", "spec/spec/rails/matchers/ar_be_valid_spec.rb", "spec/spec/rails/matchers/assert_select_spec.rb", "spec/spec/rails/matchers/errors_on_spec.rb", "spec/spec/rails/matchers/have_text_spec.rb", "spec/spec/rails/matchers/include_text_spec.rb", "spec/spec/rails/matchers/redirect_to_spec.rb", "spec/spec/rails/matchers/render_template_spec.rb", "spec/spec/rails/matchers/should_change_spec.rb", "spec/spec/rails/mocks/ar_classes.rb", "spec/spec/rails/mocks/mock_model_spec.rb", "spec/spec/rails/mocks/stub_model_spec.rb", "spec/spec/rails/sample_modified_fixture.rb", "spec/spec/rails/sample_spec.rb", "spec/spec/rails/spec_server_spec.rb", "spec/spec/rails/spec_spec.rb", "spec/spec_helper.rb"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://rspec.info/}
16
+ s.rdoc_options = ["--main", "README.txt"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{rspec}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{rspec-rails 1.1.99.9}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_runtime_dependency(%q<dchelimsky-rspec>, ["= 1.1.99.9"])
28
+ s.add_runtime_dependency(%q<rack>, [">= 0.4.0"])
29
+ s.add_development_dependency(%q<cucumber>, [">= 0.1.13"])
30
+ s.add_development_dependency(%q<hoe>, [">= 1.8.3"])
31
+ else
32
+ s.add_dependency(%q<dchelimsky-rspec>, ["= 1.1.99.9"])
33
+ s.add_dependency(%q<rack>, [">= 0.4.0"])
34
+ end
35
+ else
36
+ s.add_dependency(%q<dchelimsky-rspec>, ["= 1.1.99.9"])
37
+ s.add_dependency(%q<rack>, [">= 0.4.0"])
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require File.dirname(__FILE__) + '/../../lib/autotest/rails_rspec'
3
+ require File.dirname(__FILE__) + '/../../../rspec/spec/autotest/autotest_matchers'
4
+
5
+ describe Autotest::RailsRspec, "file mapping" do
6
+ before(:each) do
7
+ @autotest = Autotest::RailsRspec.new
8
+ @autotest.hook :initialize
9
+ end
10
+
11
+ it "should map model example to model" do
12
+ @autotest.should map_specs(['spec/models/thing_spec.rb']).
13
+ to('app/models/thing.rb')
14
+ end
15
+
16
+ it "should map controller example to controller" do
17
+ @autotest.should map_specs(['spec/controllers/things_controller_spec.rb']).
18
+ to('app/controllers/things_controller.rb')
19
+ end
20
+
21
+ it "should map view.rhtml" do
22
+ @autotest.should map_specs(['spec/views/things/index.rhtml_spec.rb']).
23
+ to('app/views/things/index.rhtml')
24
+ end
25
+
26
+ it "should map view.rhtml with underscores in example filename" do
27
+ @autotest.should map_specs(['spec/views/things/index_rhtml_spec.rb']).
28
+ to('app/views/things/index.rhtml')
29
+ end
30
+
31
+ it "should map view.html.erb" do
32
+ @autotest.should map_specs(['spec/views/things/index.html.erb_spec.rb']).
33
+ to('app/views/things/index.html.erb')
34
+ end
35
+
36
+ end
@@ -0,0 +1,7 @@
1
+ dir = File.dirname(__FILE__)
2
+ Dir["#{dir}/**/*_example.rb"].each do |file|
3
+ require file
4
+ end
5
+ Dir["#{dir}/**/*_spec.rb"].each do |file|
6
+ require file
7
+ end
@@ -0,0 +1,2 @@
1
+ class ActionViewBaseSpecController < ActionController::Base
2
+ end
@@ -0,0 +1,9 @@
1
+ class ApplicationController < ActionController::Base
2
+ before_filter :i_should_only_be_run_once,
3
+ :only => 'action_with_inherited_before_filter'
4
+
5
+ def i_should_only_be_run_once
6
+ true
7
+ end
8
+ private :i_should_only_be_run_once
9
+ end
@@ -0,0 +1,116 @@
1
+ class ControllerSpecController < ActionController::Base
2
+ before_filter :raise_error, :only => :action_with_skipped_before_filter
3
+
4
+ def raise_error
5
+ raise "from a before filter"
6
+ end
7
+
8
+ skip_before_filter :raise_error
9
+
10
+ prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
11
+
12
+ def some_action
13
+ render :template => "template/that/does/not/actually/exist"
14
+ end
15
+
16
+ def action_with_template
17
+ render :template => "controller_spec/action_with_template"
18
+ end
19
+
20
+ def action_which_sets_flash
21
+ flash[:flash_key] = "flash value"
22
+ render :text => ""
23
+ end
24
+
25
+ def action_which_gets_session
26
+ raise "expected #{params[:session_key].inspect}\ngot #{session[:session_key].inspect}" unless (session[:session_key] == params[:expected])
27
+ render :text => ""
28
+ end
29
+
30
+ def action_which_sets_session
31
+ session[:session_key] = "session value"
32
+ end
33
+
34
+ def action_which_gets_cookie
35
+ raise "expected #{params[:expected].inspect}, got #{cookies[:cookie_key].inspect}" unless (cookies[:cookie_key] == params[:expected])
36
+ render :text => ""
37
+ end
38
+
39
+ def action_which_sets_cookie
40
+ cookies['cookie_key'] = params[:value]
41
+ render :text => ""
42
+ end
43
+
44
+ def action_with_partial
45
+ render :partial => "controller_spec/partial"
46
+ end
47
+
48
+ def action_with_partial_with_object
49
+ render :partial => "controller_spec/partial", :object => params[:thing]
50
+ end
51
+
52
+ def action_with_partial_with_locals
53
+ render :partial => "controller_spec/partial", :locals => {:thing => params[:thing]}
54
+ end
55
+
56
+ def action_with_errors_in_template
57
+ render :template => "controller_spec/action_with_errors_in_template"
58
+ end
59
+
60
+ def action_setting_the_assigns_hash
61
+ @indirect_assigns_key = :indirect_assigns_key_value
62
+ end
63
+
64
+ def action_setting_flash_after_session_reset
65
+ reset_session
66
+ flash[:after_reset] = "available"
67
+ end
68
+
69
+ def action_setting_flash_before_session_reset
70
+ flash[:before_reset] = 'available'
71
+ reset_session
72
+ end
73
+
74
+ def action_with_render_update
75
+ render :update do |page|
76
+ page.replace :bottom, 'replace_me',
77
+ :partial => 'non_existent_partial'
78
+ end
79
+ end
80
+
81
+ def action_with_skipped_before_filter
82
+ render :text => ""
83
+ end
84
+
85
+ def action_that_assigns_false_to_a_variable
86
+ @a_variable = false
87
+ render :text => ""
88
+ end
89
+
90
+ def action_with_two_arg_render
91
+ render :update, :status => 404 do |page|
92
+ page.visual_effect :highlight, 'user_list'
93
+ end
94
+ end
95
+
96
+ class RescuedError < Exception; end
97
+ class UnRescuedError < Exception; end
98
+
99
+ rescue_from RescuedError do |e|
100
+ render :text => 'Rescued!'
101
+ end
102
+
103
+ def rescued_error_action
104
+ raise RescuedError
105
+ end
106
+
107
+ def un_rescued_error_action
108
+ raise UnRescuedError
109
+ end
110
+ end
111
+
112
+ class ControllerInheritingFromApplicationControllerController < ApplicationController
113
+ def action_with_inherited_before_filter
114
+ render :text => ""
115
+ end
116
+ end
@@ -0,0 +1,70 @@
1
+ class RedirectSpecController < ApplicationController
2
+
3
+ def action_with_no_redirect
4
+ render :text => "this is just here to keep this from causing a MissingTemplate error"
5
+ end
6
+
7
+ def action_with_redirect_to_somewhere
8
+ redirect_to :action => 'somewhere'
9
+ end
10
+
11
+ def action_with_redirect_to_other_somewhere
12
+ redirect_to :controller => 'render_spec', :action => 'text_action'
13
+ end
14
+
15
+ def action_with_redirect_to_somewhere_and_return
16
+ redirect_to :action => 'somewhere' and return
17
+ render :text => "this is after the return"
18
+ end
19
+
20
+ def somewhere
21
+ render :text => "this is just here to keep this from causing a MissingTemplate error"
22
+ end
23
+
24
+ def action_with_redirect_to_rspec_site
25
+ redirect_to "http://rspec.rubyforge.org"
26
+ end
27
+
28
+ def action_with_redirect_back
29
+ redirect_to :back
30
+ end
31
+
32
+ def action_with_redirect_in_respond_to
33
+ respond_to do |wants|
34
+ wants.html { redirect_to :action => 'somewhere' }
35
+ end
36
+ end
37
+
38
+ def action_with_redirect_which_creates_query_string
39
+ redirect_to :action => "somewhere", :id => 1111, :param1 => "value1", :param2 => "value2"
40
+ end
41
+
42
+ # note: sometimes this is the URL which rails will generate from the hash in
43
+ # action_with_redirect_which_creates_query_string
44
+ def action_with_redirect_with_query_string_order1
45
+ redirect_to "http://test.host/redirect_spec/somewhere/1111?param1=value1&param2=value2"
46
+ end
47
+
48
+ # note: sometimes this is the URL which rails will generate from the hash in
49
+ # action_with_redirect_which_creates_query_string
50
+ def action_with_redirect_with_query_string_order2
51
+ redirect_to "http://test.host/redirect_spec/somewhere/1111?param2=value2&param1=value1"
52
+ end
53
+
54
+ def action_with_redirect_to_unroutable_url_inside_app
55
+ redirect_to :controller => "nonexistant", :action => "none"
56
+ end
57
+
58
+ def action_with_method_restriction
59
+ render :text => ''
60
+ end
61
+
62
+ def action_to_redirect_to_action_with_method_restriction
63
+ redirect_to :action => 'action_with_method_restriction'
64
+ end
65
+
66
+ def action_with_redirect_to_somewhere_with_status
67
+ redirect_to :action => 'somewhere', :status => 301
68
+ end
69
+ end
70
+