mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-22 02:00:12 +01:00
Added Rspec and Webrat plugins and started porting Selenium on Rails tests to Rspec Plain Text Stories driving Webrat driving Selenium.
This commit is contained in:
parent
7b432a74ed
commit
2c09db45c5
602 changed files with 47788 additions and 29 deletions
36
vendor/plugins/rspec-rails/spec/rails/autotest/mappings_spec.rb
vendored
Normal file
36
vendor/plugins/rspec-rails/spec/rails/autotest/mappings_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require File.join(File.dirname(__FILE__), *%w[.. .. .. lib autotest rails_rspec])
|
||||
require File.join(File.dirname(__FILE__), *%w[.. .. .. .. rspec spec autotest_matchers])
|
||||
|
||||
describe Autotest::RailsRspec, "file mapping" do
|
||||
before(:each) do
|
||||
@autotest = Autotest::RailsRspec.new
|
||||
@autotest.hook :initialize
|
||||
end
|
||||
|
||||
it "should map model example to model" do
|
||||
@autotest.should map_specs(['spec/models/thing_spec.rb']).
|
||||
to('app/models/thing.rb')
|
||||
end
|
||||
|
||||
it "should map controller example to controller" do
|
||||
@autotest.should map_specs(['spec/controllers/things_controller_spec.rb']).
|
||||
to('app/controllers/things_controller.rb')
|
||||
end
|
||||
|
||||
it "should map view.rhtml" do
|
||||
@autotest.should map_specs(['spec/views/things/index.rhtml_spec.rb']).
|
||||
to('app/views/things/index.rhtml')
|
||||
end
|
||||
|
||||
it "should map view.rhtml with underscores in example filename" do
|
||||
@autotest.should map_specs(['spec/views/things/index_rhtml_spec.rb']).
|
||||
to('app/views/things/index.rhtml')
|
||||
end
|
||||
|
||||
it "should map view.html.erb" do
|
||||
@autotest.should map_specs(['spec/views/things/index.html.erb_spec.rb']).
|
||||
to('app/views/things/index.html.erb')
|
||||
end
|
||||
|
||||
end
|
||||
8
vendor/plugins/rspec-rails/spec/rails/autotest/rails_rspec_spec.rb
vendored
Normal file
8
vendor/plugins/rspec-rails/spec/rails/autotest/rails_rspec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "autotest", "rails_rspec")
|
||||
|
||||
describe Autotest::RailsRspec do
|
||||
it "should provide the correct spec_command" do
|
||||
Autotest::RailsRspec.new.spec_command.should == "script/spec"
|
||||
end
|
||||
end
|
||||
60
vendor/plugins/rspec-rails/spec/rails/example/assigns_hash_proxy_spec.rb
vendored
Normal file
60
vendor/plugins/rspec-rails/spec/rails/example/assigns_hash_proxy_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
describe "AssignsHashProxy" do
|
||||
before(:each) do
|
||||
@object = Object.new
|
||||
@assigns = Hash.new
|
||||
@object.stub!(:assigns).and_return(@assigns)
|
||||
@proxy = Spec::Rails::Example::AssignsHashProxy.new(@object)
|
||||
end
|
||||
|
||||
it "has [] accessor" do
|
||||
@proxy['foo'] = 'bar'
|
||||
@assigns['foo'].should == 'bar'
|
||||
@proxy['foo'].should == 'bar'
|
||||
end
|
||||
|
||||
it "works for symbol key" do
|
||||
@assigns[:foo] = 2
|
||||
@proxy[:foo].should == 2
|
||||
end
|
||||
|
||||
it "checks for string key before symbol key" do
|
||||
@assigns['foo'] = false
|
||||
@assigns[:foo] = 2
|
||||
@proxy[:foo].should == false
|
||||
end
|
||||
|
||||
it "each method iterates through each element like a Hash" do
|
||||
values = {
|
||||
'foo' => 1,
|
||||
'bar' => 2,
|
||||
'baz' => 3
|
||||
}
|
||||
@proxy['foo'] = values['foo']
|
||||
@proxy['bar'] = values['bar']
|
||||
@proxy['baz'] = values['baz']
|
||||
|
||||
@proxy.each do |key, value|
|
||||
key.should == key
|
||||
value.should == values[key]
|
||||
end
|
||||
end
|
||||
|
||||
it "delete method deletes the element of passed in key" do
|
||||
@proxy['foo'] = 'bar'
|
||||
@proxy.delete('foo').should == 'bar'
|
||||
@proxy['foo'].should be_nil
|
||||
end
|
||||
|
||||
it "has_key? detects the presence of a key" do
|
||||
@proxy['foo'] = 'bar'
|
||||
@proxy.has_key?('foo').should == true
|
||||
@proxy.has_key?('bar').should == false
|
||||
end
|
||||
|
||||
it "should sets an instance var" do
|
||||
@proxy['foo'] = 'bar'
|
||||
@object.instance_eval { @foo }.should == 'bar'
|
||||
end
|
||||
end
|
||||
83
vendor/plugins/rspec-rails/spec/rails/example/configuration_spec.rb
vendored
Normal file
83
vendor/plugins/rspec-rails/spec/rails/example/configuration_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
describe Configuration, :shared => true do
|
||||
before(:each) { @config = Configuration.new }
|
||||
end
|
||||
|
||||
describe Configuration, "#use_transactional_fixtures" do
|
||||
it_should_behave_like "Spec::Example::Configuration"
|
||||
|
||||
it "should return Test::Unit::TestCase.use_transactional_fixtures" do
|
||||
@config.use_transactional_fixtures.should == Test::Unit::TestCase.use_transactional_fixtures
|
||||
end
|
||||
|
||||
it "should set Test::Unit::TestCase.use_transactional_fixtures to false" do
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.should_receive(:use_transactional_fixtures=).with(false)
|
||||
end
|
||||
@config.use_transactional_fixtures = false
|
||||
end
|
||||
|
||||
it "should set Test::Unit::TestCase.use_transactional_fixtures to true" do
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.should_receive(:use_transactional_fixtures=).with(true)
|
||||
end
|
||||
@config.use_transactional_fixtures = true
|
||||
end
|
||||
end
|
||||
|
||||
describe Configuration, "#use_instantiated_fixtures" do
|
||||
it_should_behave_like "Spec::Example::Configuration"
|
||||
|
||||
it "should return Test::Unit::TestCase.use_transactional_fixtures" do
|
||||
@config.use_instantiated_fixtures.should == Test::Unit::TestCase.use_instantiated_fixtures
|
||||
end
|
||||
|
||||
it "should set Test::Unit::TestCase.use_instantiated_fixtures to false" do
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.should_receive(:use_instantiated_fixtures=).with(false)
|
||||
end
|
||||
@config.use_instantiated_fixtures = false
|
||||
end
|
||||
|
||||
it "should set Test::Unit::TestCase.use_instantiated_fixtures to true" do
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.should_receive(:use_instantiated_fixtures=).with(true)
|
||||
end
|
||||
@config.use_instantiated_fixtures = true
|
||||
end
|
||||
end
|
||||
|
||||
describe Configuration, "#fixture_path" do
|
||||
it_should_behave_like "Spec::Example::Configuration"
|
||||
|
||||
it "should default to RAILS_ROOT + '/spec/fixtures'" do
|
||||
@config.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
|
||||
end
|
||||
end
|
||||
|
||||
it "should set fixture_path" do
|
||||
@config.fixture_path = "/new/path"
|
||||
@config.fixture_path.should == "/new/path"
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.fixture_path.should == "/new/path"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe Configuration, "#global_fixtures" do
|
||||
it_should_behave_like "Spec::Example::Configuration"
|
||||
|
||||
it "should set fixtures on TestCase" do
|
||||
Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
|
||||
example_group.should_receive(:fixtures).with(:blah)
|
||||
end
|
||||
@config.global_fixtures = [:blah]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
62
vendor/plugins/rspec-rails/spec/rails/example/controller_isolation_spec.rb
vendored
Normal file
62
vendor/plugins/rspec-rails/spec/rails/example/controller_isolation_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require 'controller_spec_controller'
|
||||
|
||||
describe "a controller spec running in isolation mode", :type => :controller do
|
||||
controller_name :controller_spec
|
||||
|
||||
it "should not care if the template doesn't exist" do
|
||||
get 'some_action'
|
||||
response.should be_success
|
||||
response.should render_template("template/that/does/not/actually/exist")
|
||||
end
|
||||
|
||||
it "should not care if the template has errors" do
|
||||
get 'action_with_errors_in_template'
|
||||
response.should be_success
|
||||
response.should render_template("action_with_errors_in_template")
|
||||
end
|
||||
end
|
||||
|
||||
describe "a controller spec running in integration mode", :type => :controller do
|
||||
controller_name :controller_spec
|
||||
integrate_views
|
||||
|
||||
before(:each) do
|
||||
controller.class.send(:define_method, :rescue_action) { |e| raise e }
|
||||
end
|
||||
|
||||
it "should render a template" do
|
||||
get 'action_with_template'
|
||||
response.should be_success
|
||||
response.should have_tag('div', 'This is action_with_template.rhtml')
|
||||
end
|
||||
|
||||
it "should choke if the template doesn't exist" do
|
||||
error = defined?(ActionController::MissingTemplate) ? ActionController::MissingTemplate : ActionView::MissingTemplate
|
||||
lambda { get 'some_action' }.should raise_error(error)
|
||||
response.should_not be_success
|
||||
end
|
||||
|
||||
it "should choke if the template has errors" do
|
||||
lambda { get 'action_with_errors_in_template' }.should raise_error(ActionView::TemplateError)
|
||||
response.should_not be_success
|
||||
end
|
||||
|
||||
describe "nested" do
|
||||
it "should render a template" do
|
||||
get 'action_with_template'
|
||||
response.should be_success
|
||||
response.should have_tag('div', 'This is action_with_template.rhtml')
|
||||
end
|
||||
|
||||
describe "with integrate_views turned off" do
|
||||
integrate_views false
|
||||
|
||||
it "should not care if the template doesn't exist" do
|
||||
get 'some_action'
|
||||
response.should be_success
|
||||
response.should render_template("template/that/does/not/actually/exist")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
206
vendor/plugins/rspec-rails/spec/rails/example/controller_spec_spec.rb
vendored
Normal file
206
vendor/plugins/rspec-rails/spec/rails/example/controller_spec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require 'controller_spec_controller'
|
||||
|
||||
['integration', 'isolation'].each do |mode|
|
||||
describe "A controller example running in #{mode} mode", :type => :controller do
|
||||
controller_name :controller_spec
|
||||
integrate_views if mode == 'integration'
|
||||
|
||||
it "should provide controller.session as session" do
|
||||
get 'action_with_template'
|
||||
session.should equal(controller.session)
|
||||
end
|
||||
|
||||
it "should provide the same session object before and after the action" do
|
||||
session_before = session
|
||||
get 'action_with_template'
|
||||
session.should equal(session_before)
|
||||
end
|
||||
|
||||
it "should keep the same data in the session before and after the action" do
|
||||
session[:foo] = :bar
|
||||
get 'action_with_template'
|
||||
session[:foo].should == :bar
|
||||
end
|
||||
|
||||
it "should ensure controller.session is NOT nil before the action" do
|
||||
controller.session.should_not be_nil
|
||||
get 'action_with_template'
|
||||
end
|
||||
|
||||
it "should ensure controller.session is NOT nil after the action" do
|
||||
get 'action_with_template'
|
||||
controller.session.should_not be_nil
|
||||
end
|
||||
|
||||
it "should allow specifying a partial with partial name only" do
|
||||
get 'action_with_partial'
|
||||
response.should render_template("_partial")
|
||||
end
|
||||
|
||||
it "should allow specifying a partial with expect_render" do
|
||||
controller.expect_render(:partial => "controller_spec/partial")
|
||||
get 'action_with_partial'
|
||||
end
|
||||
|
||||
it "should allow specifying a partial with expect_render with object" do
|
||||
controller.expect_render(:partial => "controller_spec/partial", :object => "something")
|
||||
get 'action_with_partial_with_object', :thing => "something"
|
||||
end
|
||||
|
||||
it "should allow specifying a partial with expect_render with locals" do
|
||||
controller.expect_render(:partial => "controller_spec/partial", :locals => {:thing => "something"})
|
||||
get 'action_with_partial_with_locals', :thing => "something"
|
||||
end
|
||||
|
||||
it "should yield to render :update" do
|
||||
template = stub("template")
|
||||
controller.expect_render(:update).and_yield(template)
|
||||
template.should_receive(:replace).with(:bottom, "replace_me", :partial => "non_existent_partial")
|
||||
get 'action_with_render_update'
|
||||
end
|
||||
|
||||
it "should allow a path relative to RAILS_ROOT/app/views/ when specifying a partial" do
|
||||
get 'action_with_partial'
|
||||
response.should render_template("controller_spec/_partial")
|
||||
end
|
||||
|
||||
it "should provide access to flash" do
|
||||
get 'action_which_sets_flash'
|
||||
flash[:flash_key].should == "flash value"
|
||||
end
|
||||
|
||||
it "should provide access to flash values set after a session reset" do
|
||||
get 'action_setting_flash_after_session_reset'
|
||||
flash[:after_reset].should == "available"
|
||||
end
|
||||
|
||||
it "should not provide access to flash values set before a session reset" do
|
||||
get 'action_setting_flash_before_session_reset'
|
||||
flash[:before_reset].should_not == "available"
|
||||
end
|
||||
|
||||
it "should provide access to session" do
|
||||
session[:session_key] = "session value"
|
||||
lambda do
|
||||
get 'action_which_gets_session', :expected => "session value"
|
||||
end.should_not raise_error
|
||||
end
|
||||
|
||||
it "should support custom routes" do
|
||||
route_for(:controller => "custom_route_spec", :action => "custom_route").should == "/custom_route"
|
||||
end
|
||||
|
||||
it "should support existing routes" do
|
||||
route_for(:controller => "controller_spec", :action => "some_action").should == "/controller_spec/some_action"
|
||||
end
|
||||
|
||||
it "should generate params for custom routes" do
|
||||
params_from(:get, '/custom_route').should == {:controller => "custom_route_spec", :action => "custom_route"}
|
||||
end
|
||||
|
||||
it "should generate params for existing routes" do
|
||||
params_from(:get, '/controller_spec/some_action').should == {:controller => "controller_spec", :action => "some_action"}
|
||||
end
|
||||
|
||||
it "should expose instance vars through the assigns hash" do
|
||||
get 'action_setting_the_assigns_hash'
|
||||
assigns[:indirect_assigns_key].should == :indirect_assigns_key_value
|
||||
end
|
||||
|
||||
it "should expose the assigns hash directly" do
|
||||
get 'action_setting_the_assigns_hash'
|
||||
assigns[:direct_assigns_key].should == :direct_assigns_key_value
|
||||
end
|
||||
|
||||
it "should complain when calling should_receive(:render) on the controller" do
|
||||
lambda {
|
||||
controller.should_receive(:render)
|
||||
}.should raise_error(RuntimeError, /should_receive\(:render\) has been disabled/)
|
||||
end
|
||||
|
||||
it "should complain when calling stub!(:render) on the controller" do
|
||||
controller.extend Spec::Mocks::Methods
|
||||
lambda {
|
||||
controller.stub!(:render)
|
||||
}.should raise_error(RuntimeError, /stub!\(:render\) has been disabled/)
|
||||
end
|
||||
|
||||
it "should NOT complain when calling should_receive with arguments other than :render" do
|
||||
controller.should_receive(:anything_besides_render)
|
||||
lambda {
|
||||
controller.rspec_verify
|
||||
}.should raise_error(Exception, /expected :anything_besides_render/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "Given a controller spec for RedirectSpecController running in #{mode} mode", :type => :controller do
|
||||
controller_name :redirect_spec
|
||||
integrate_views if mode == 'integration'
|
||||
|
||||
it "a redirect should ignore the absence of a template" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should be_redirect
|
||||
response.redirect_url.should == "http://test.host/redirect_spec/somewhere"
|
||||
response.should redirect_to("http://test.host/redirect_spec/somewhere")
|
||||
end
|
||||
|
||||
it "a call to response.should redirect_to should fail if no redirect" do
|
||||
get 'action_with_no_redirect'
|
||||
lambda {
|
||||
response.redirect?.should be_true
|
||||
}.should fail
|
||||
lambda {
|
||||
response.should redirect_to("http://test.host/redirect_spec/somewhere")
|
||||
}.should fail_with("expected redirect to \"http://test.host/redirect_spec/somewhere\", got no redirect")
|
||||
end
|
||||
end
|
||||
|
||||
describe "Given a controller spec running in #{mode} mode" do
|
||||
example_group = describe "A controller spec"
|
||||
# , :type => :controller do
|
||||
# integrate_views if mode == 'integration'
|
||||
it "a spec in a context without controller_name set should fail with a useful warning" do
|
||||
pending("need a new way to deal with examples that should_raise")
|
||||
# ,
|
||||
# :should_raise => [
|
||||
# Spec::Expectations::ExpectationNotMetError,
|
||||
# /You have to declare the controller name in controller specs/
|
||||
# ] do
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe ControllerSpecController, :type => :controller do
|
||||
it "should not require naming the controller if describe is passed a type" do
|
||||
end
|
||||
end
|
||||
|
||||
describe "A controller spec with controller_name set", :type => :controller do
|
||||
controller_name :controller_spec
|
||||
|
||||
describe "nested" do
|
||||
it "should inherit the controller name" do
|
||||
get 'action_with_template'
|
||||
response.should be_success
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module Spec
|
||||
module Rails
|
||||
module Example
|
||||
describe ControllerExampleGroup do
|
||||
it "should clear its name from the description" do
|
||||
group = describe("foo", :type => :controller) do
|
||||
$nested_group = describe("bar") do
|
||||
end
|
||||
end
|
||||
group.description.to_s.should == "foo"
|
||||
$nested_group.description.to_s.should == "foo bar"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
112
vendor/plugins/rspec-rails/spec/rails/example/example_group_factory_spec.rb
vendored
Normal file
112
vendor/plugins/rspec-rails/spec/rails/example/example_group_factory_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Example
|
||||
describe ExampleGroupFactory do
|
||||
it "should return a ModelExampleGroup when given :type => :model" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :type => :model
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ModelExampleGroup when given :spec_path => '/blah/spec/models/'" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/models/blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\models\\' (windows format)" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '\\blah\\spec\\models\\blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
|
||||
end
|
||||
|
||||
it "should return a RailsExampleGroup when given :spec_path => '/blah/spec/foo/' (anything other than controllers, views and helpers)" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/foo/blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::RailsExampleGroup
|
||||
end
|
||||
|
||||
it "should return a RailsExampleGroup when given :spec_path => '\\blah\\spec\\foo\\' (windows format) (anything other than controllers, views and helpers)" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '\\blah\\spec\\foo\\blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::RailsExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ViewExampleGroup when given :type => :model" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :type => :view
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ViewExampleGroup when given :spec_path => '/blah/spec/views/'" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/views/blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\views\\' (windows format)" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '\\blah\\spec\\views\\blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
|
||||
end
|
||||
|
||||
it "should return a HelperExampleGroup when given :type => :helper" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :type => :helper
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
|
||||
end
|
||||
|
||||
it "should return a HelperExampleGroup when given :spec_path => '/blah/spec/helpers/'" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/helpers/blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\helpers\\' (windows format)" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '\\blah\\spec\\helpers\\blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ControllerExampleGroup when given :type => :controller" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :type => :controller
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ControllerExampleGroup when given :spec_path => '/blah/spec/controllers/'" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/controllers/blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
||||
end
|
||||
|
||||
it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\controllers\\' (windows format)" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '\\blah\\spec\\controllers\\blah.rb'
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
||||
end
|
||||
|
||||
it "should favor the :type over the :spec_path" do
|
||||
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
||||
"name", :spec_path => '/blah/spec/models/blah.rb', :type => :controller
|
||||
) {}
|
||||
example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
161
vendor/plugins/rspec-rails/spec/rails/example/helper_spec_spec.rb
vendored
Executable file
161
vendor/plugins/rspec-rails/spec/rails/example/helper_spec_spec.rb
vendored
Executable file
|
|
@ -0,0 +1,161 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
Spec::Runner.configuration.global_fixtures = :people
|
||||
|
||||
describe ExplicitHelper, :type => :helper do
|
||||
include ExplicitHelper
|
||||
|
||||
it "should not require naming the helper if describe is passed a type" do
|
||||
method_in_explicit_helper.should match(/text from a method/)
|
||||
helper.method_in_explicit_helper.should match(/text from a method/)
|
||||
end
|
||||
end
|
||||
|
||||
module Spec
|
||||
module Rails
|
||||
module Example
|
||||
describe HelperExampleGroup, :type => :helper do
|
||||
helper_name :explicit
|
||||
|
||||
it "DEPRECATED should have direct access to methods defined in helpers" do
|
||||
method_in_explicit_helper.should =~ /text from a method/
|
||||
end
|
||||
|
||||
it "should expose the helper with the #helper method" do
|
||||
helper.method_in_explicit_helper.should =~ /text from a method/
|
||||
end
|
||||
|
||||
it "should have access to named routes" do
|
||||
rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
|
||||
rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
|
||||
|
||||
helper.named_url.should == "http://test.host/rspec_on_rails_specs"
|
||||
helper.named_path.should == "/rspec_on_rails_specs"
|
||||
end
|
||||
|
||||
it "should fail if the helper method deson't exist" do
|
||||
lambda { non_existent_helper_method }.should raise_error(NameError)
|
||||
lambda { helper.non_existent_helper_method }.should raise_error(NameError)
|
||||
end
|
||||
|
||||
it "should have access to session" do
|
||||
session[:foo] = 'bar'
|
||||
session_foo.should == 'bar'
|
||||
helper.session_foo.should == 'bar'
|
||||
end
|
||||
|
||||
it "should have access to params" do
|
||||
params[:foo] = 'bar'
|
||||
params_foo.should == 'bar'
|
||||
helper.params_foo.should == 'bar'
|
||||
end
|
||||
|
||||
it "should have access to request" do
|
||||
request.stub!(:thing).and_return('bar')
|
||||
request_thing.should == 'bar'
|
||||
helper.request_thing.should == 'bar'
|
||||
end
|
||||
|
||||
it "should have access to flash" do
|
||||
flash[:thing] = 'camera'
|
||||
flash_thing.should == 'camera'
|
||||
helper.flash_thing.should == 'camera'
|
||||
end
|
||||
end
|
||||
|
||||
describe HelperExampleGroup, "#eval_erb", :type => :helper do
|
||||
helper_name :explicit
|
||||
|
||||
it "should support methods that accept blocks" do
|
||||
eval_erb("<% prepend 'foo' do %>bar<% end %>").should == "foobar"
|
||||
end
|
||||
end
|
||||
|
||||
describe HelperExampleGroup, ".fixtures", :type => :helper do
|
||||
helper_name :explicit
|
||||
fixtures :animals
|
||||
|
||||
it "should load fixtures" do
|
||||
pig = animals(:pig)
|
||||
pig.class.should == Animal
|
||||
end
|
||||
|
||||
it "should load global fixtures" do
|
||||
lachie = people(:lachie)
|
||||
lachie.class.should == Person
|
||||
end
|
||||
end
|
||||
|
||||
describe "methods from standard helpers", :type => :helper do
|
||||
helper_name :explicit
|
||||
it "should be exposed to the helper" do
|
||||
helper.link_to("Foo","http://bar").should have_tag("a")
|
||||
end
|
||||
end
|
||||
|
||||
describe HelperExampleGroup, "included modules", :type => :helper do
|
||||
helpers = [
|
||||
ActionView::Helpers::ActiveRecordHelper,
|
||||
ActionView::Helpers::AssetTagHelper,
|
||||
ActionView::Helpers::BenchmarkHelper,
|
||||
ActionView::Helpers::CacheHelper,
|
||||
ActionView::Helpers::CaptureHelper,
|
||||
ActionView::Helpers::DateHelper,
|
||||
ActionView::Helpers::DebugHelper,
|
||||
ActionView::Helpers::FormHelper,
|
||||
ActionView::Helpers::FormOptionsHelper,
|
||||
ActionView::Helpers::FormTagHelper,
|
||||
ActionView::Helpers::JavaScriptHelper,
|
||||
ActionView::Helpers::NumberHelper,
|
||||
ActionView::Helpers::PrototypeHelper,
|
||||
ActionView::Helpers::ScriptaculousHelper,
|
||||
ActionView::Helpers::TagHelper,
|
||||
ActionView::Helpers::TextHelper,
|
||||
ActionView::Helpers::UrlHelper
|
||||
]
|
||||
helpers << ActionView::Helpers::PaginationHelper rescue nil #removed for 2.0
|
||||
helpers << ActionView::Helpers::JavaScriptMacrosHelper rescue nil #removed for 2.0
|
||||
helpers.each do |helper_module|
|
||||
it "should include #{helper_module}" do
|
||||
self.class.ancestors.should include(helper_module)
|
||||
helper.class.ancestors.should include(helper_module)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
|
||||
# When that is done, remove this method
|
||||
describe HelperExampleGroup, "#protect_against_forgery?", :type => :helper do
|
||||
it "should return false" do
|
||||
protect_against_forgery?.should be_false
|
||||
helper.protect_against_forgery?.should be_false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module Bug11223
|
||||
# see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
|
||||
describe 'Accessing flash from helper spec', :type => :helper do
|
||||
it 'should not raise an error' do
|
||||
lambda { flash['test'] }.should_not raise_error
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module Spec
|
||||
module Rails
|
||||
module Example
|
||||
describe HelperExampleGroup do
|
||||
it "should clear its name from the description" do
|
||||
group = describe("foo", :type => :helper) do
|
||||
$nested_group = describe("bar") do
|
||||
end
|
||||
end
|
||||
group.description.to_s.should == "foo"
|
||||
$nested_group.description.to_s.should == "foo bar"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
18
vendor/plugins/rspec-rails/spec/rails/example/model_spec_spec.rb
vendored
Normal file
18
vendor/plugins/rspec-rails/spec/rails/example/model_spec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module Spec
|
||||
module Rails
|
||||
module Example
|
||||
describe ModelExampleGroup do
|
||||
it "should clear its name from the description" do
|
||||
group = describe("foo", :type => :model) do
|
||||
$nested_group = describe("bar") do
|
||||
end
|
||||
end
|
||||
group.description.to_s.should == "foo"
|
||||
$nested_group.description.to_s.should == "foo bar"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
16
vendor/plugins/rspec-rails/spec/rails/example/shared_behaviour_spec.rb
vendored
Executable file
16
vendor/plugins/rspec-rails/spec/rails/example/shared_behaviour_spec.rb
vendored
Executable file
|
|
@ -0,0 +1,16 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
describe "A shared view example_group", :shared => true do
|
||||
it "should have some tag with some text" do
|
||||
response.should have_tag('div', 'This is text from a method in the ViewSpecHelper')
|
||||
end
|
||||
end
|
||||
|
||||
describe "A view example_group", :type => :view do
|
||||
it_should_behave_like "A shared view example_group"
|
||||
|
||||
before(:each) do
|
||||
render "view_spec/implicit_helper"
|
||||
end
|
||||
end
|
||||
|
||||
33
vendor/plugins/rspec-rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb
vendored
Normal file
33
vendor/plugins/rspec-rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
describe "assert_equal", :shared => true do
|
||||
it "like assert_equal" do
|
||||
assert_equal 1, 1
|
||||
lambda {
|
||||
assert_equal 1, 2
|
||||
}.should raise_error(Test::Unit::AssertionFailedError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "A model spec should be able to access 'test/unit' assertions", :type => :model do
|
||||
it_should_behave_like "assert_equal"
|
||||
end
|
||||
|
||||
describe "A view spec should be able to access 'test/unit' assertions", :type => :view do
|
||||
it_should_behave_like "assert_equal"
|
||||
end
|
||||
|
||||
describe "A helper spec should be able to access 'test/unit' assertions", :type => :helper do
|
||||
it_should_behave_like "assert_equal"
|
||||
end
|
||||
|
||||
describe "A controller spec with integrated views should be able to access 'test/unit' assertions", :type => :controller do
|
||||
controller_name :controller_spec
|
||||
integrate_views
|
||||
it_should_behave_like "assert_equal"
|
||||
end
|
||||
|
||||
describe "A controller spec should be able to access 'test/unit' assertions", :type => :controller do
|
||||
controller_name :controller_spec
|
||||
it_should_behave_like "assert_equal"
|
||||
end
|
||||
272
vendor/plugins/rspec-rails/spec/rails/example/view_spec_spec.rb
vendored
Normal file
272
vendor/plugins/rspec-rails/spec/rails/example/view_spec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
describe "A template with an implicit helper", :type => :view do
|
||||
before(:each) do
|
||||
render "view_spec/implicit_helper"
|
||||
end
|
||||
|
||||
it "should include the helper" do
|
||||
response.should have_tag('div', :content => "This is text from a method in the ViewSpecHelper")
|
||||
end
|
||||
|
||||
it "should include the application helper" do
|
||||
response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
|
||||
end
|
||||
|
||||
it "should have access to named routes" do
|
||||
rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
|
||||
rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
|
||||
end
|
||||
end
|
||||
|
||||
describe "A template requiring an explicit helper", :type => :view do
|
||||
before(:each) do
|
||||
render "view_spec/explicit_helper", :helper => 'explicit'
|
||||
end
|
||||
|
||||
it "should include the helper if specified" do
|
||||
response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
|
||||
end
|
||||
|
||||
it "should include the application helper" do
|
||||
response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
|
||||
end
|
||||
end
|
||||
|
||||
describe "A template requiring multiple explicit helpers", :type => :view do
|
||||
before(:each) do
|
||||
render "view_spec/multiple_helpers", :helpers => ['explicit', 'more_explicit']
|
||||
end
|
||||
|
||||
it "should include all specified helpers" do
|
||||
response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
|
||||
response.should have_tag('div', :content => "This is text from a method in the MoreExplicitHelper")
|
||||
end
|
||||
|
||||
it "should include the application helper" do
|
||||
response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
|
||||
end
|
||||
end
|
||||
|
||||
describe "Message Expectations on helper methods", :type => :view do
|
||||
it "should work" do
|
||||
template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 1')
|
||||
render "view_spec/implicit_helper"
|
||||
response.body.should =~ /alternate message 1/
|
||||
end
|
||||
|
||||
it "should work twice" do
|
||||
template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 2')
|
||||
render "view_spec/implicit_helper"
|
||||
response.body.should =~ /alternate message 2/
|
||||
end
|
||||
end
|
||||
|
||||
describe "A template that includes a partial", :type => :view do
|
||||
def render!
|
||||
render "view_spec/template_with_partial"
|
||||
end
|
||||
|
||||
it "should render the enclosing template" do
|
||||
render!
|
||||
response.should have_tag('div', "method_in_partial in ViewSpecHelper")
|
||||
end
|
||||
|
||||
it "should render the partial" do
|
||||
render!
|
||||
response.should have_tag('div', "method_in_template_with_partial in ViewSpecHelper")
|
||||
end
|
||||
|
||||
it "should include the application helper" do
|
||||
render!
|
||||
response.should have_tag('div', "This is text from a method in the ApplicationHelper")
|
||||
end
|
||||
|
||||
it "should pass expect_render with the right partial" do
|
||||
template.expect_render(:partial => 'partial')
|
||||
render!
|
||||
template.verify_rendered
|
||||
end
|
||||
|
||||
it "should fail expect_render with the wrong partial" do
|
||||
template.expect_render(:partial => 'non_existent')
|
||||
render!
|
||||
begin
|
||||
template.verify_rendered
|
||||
rescue Spec::Mocks::MockExpectationError => e
|
||||
ensure
|
||||
e.backtrace.find{|line| line =~ /view_spec_spec\.rb\:92/}.should_not be_nil
|
||||
end
|
||||
end
|
||||
|
||||
it "should pass expect_render when a partial is expected twice and happens twice" do
|
||||
template.expect_render(:partial => 'partial_used_twice').twice
|
||||
render!
|
||||
template.verify_rendered
|
||||
end
|
||||
|
||||
it "should pass expect_render when a partial is expected once and happens twice" do
|
||||
template.expect_render(:partial => 'partial_used_twice')
|
||||
render!
|
||||
begin
|
||||
template.verify_rendered
|
||||
rescue Spec::Mocks::MockExpectationError => e
|
||||
ensure
|
||||
e.backtrace.find{|line| line =~ /view_spec_spec\.rb\:109/}.should_not be_nil
|
||||
end
|
||||
end
|
||||
|
||||
it "should fail expect_render with the right partial but wrong options" do
|
||||
template.expect_render(:partial => 'partial', :locals => {:thing => Object.new})
|
||||
render!
|
||||
lambda {template.verify_rendered}.should raise_error(Spec::Mocks::MockExpectationError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "A partial that includes a partial", :type => :view do
|
||||
it "should support expect_render with nested partial" do
|
||||
obj = Object.new
|
||||
template.expect_render(:partial => 'partial', :object => obj)
|
||||
render :partial => "view_spec/partial_with_sub_partial", :locals => { :partial => obj }
|
||||
end
|
||||
end
|
||||
|
||||
describe "A view that includes a partial using :collection and :spacer_template", :type => :view do
|
||||
it "should render the partial w/ spacer_tamplate" do
|
||||
render "view_spec/template_with_partial_using_collection"
|
||||
response.should have_tag('div',/method_in_partial/)
|
||||
response.should have_tag('div',/ApplicationHelper/)
|
||||
response.should have_tag('div',/ViewSpecHelper/)
|
||||
response.should have_tag('hr#spacer')
|
||||
end
|
||||
|
||||
it "should render the partial" do
|
||||
template.expect_render(:partial => 'partial',
|
||||
:collection => ['Alice', 'Bob'],
|
||||
:spacer_template => 'spacer')
|
||||
render "view_spec/template_with_partial_using_collection"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "A view that includes a partial using an array as partial_path", :type => :view do
|
||||
before(:each) do
|
||||
module ActionView::Partials
|
||||
def render_template_with_partial_with_array_support(partial_path, local_assigns = nil, deprecated_local_assigns = nil)
|
||||
if partial_path.is_a?(Array)
|
||||
"Array Partial"
|
||||
else
|
||||
render_partial_without_array_support(partial_path, local_assigns, deprecated_local_assigns)
|
||||
end
|
||||
end
|
||||
|
||||
alias :render_partial_without_array_support :render_partial
|
||||
alias :render_partial :render_template_with_partial_with_array_support
|
||||
end
|
||||
|
||||
@array = ['Alice', 'Bob']
|
||||
assigns[:array] = @array
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
module ActionView::Partials
|
||||
alias :render_template_with_partial_with_array_support :render_partial
|
||||
alias :render_partial :render_partial_without_array_support
|
||||
undef render_template_with_partial_with_array_support
|
||||
end
|
||||
end
|
||||
|
||||
it "should render have the array passed through to render_partial without modification" do
|
||||
render "view_spec/template_with_partial_with_array"
|
||||
response.body.should match(/^Array Partial$/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "Different types of renders (not :template)", :type => :view do
|
||||
it "should render partial with local" do
|
||||
render :partial => "view_spec/partial_with_local_variable", :locals => {:x => "Ender"}
|
||||
response.should have_tag('div', :content => "Ender")
|
||||
end
|
||||
end
|
||||
|
||||
describe "A view", :type => :view do
|
||||
before(:each) do
|
||||
session[:key] = "session"
|
||||
params[:key] = "params"
|
||||
flash[:key] = "flash"
|
||||
render "view_spec/accessor"
|
||||
end
|
||||
|
||||
it "should have access to session data" do
|
||||
response.should have_tag("div#session", "session")
|
||||
end
|
||||
|
||||
specify "should have access to params data" do
|
||||
response.should have_tag("div#params", "params")
|
||||
end
|
||||
|
||||
it "should have access to flash data" do
|
||||
response.should have_tag("div#flash", "flash")
|
||||
end
|
||||
|
||||
it "should have a controller param" do
|
||||
response.should have_tag("div#controller", "view_spec")
|
||||
end
|
||||
|
||||
it "should have an action param" do
|
||||
response.should have_tag("div#action", "accessor")
|
||||
end
|
||||
end
|
||||
|
||||
describe "A view with a form_tag", :type => :view do
|
||||
it "should render the right action" do
|
||||
render "view_spec/entry_form"
|
||||
response.should have_tag("form[action=?]","/view_spec/entry_form")
|
||||
end
|
||||
end
|
||||
|
||||
describe "An instantiated ViewExampleGroupController", :type => :view do
|
||||
before do
|
||||
render "view_spec/foo/show"
|
||||
end
|
||||
|
||||
it "should return the name of the real controller that it replaces" do
|
||||
@controller.controller_name.should == 'foo'
|
||||
end
|
||||
|
||||
it "should return the path of the real controller that it replaces" do
|
||||
@controller.controller_path.should == 'view_spec/foo'
|
||||
end
|
||||
end
|
||||
|
||||
describe "render :inline => ...", :type => :view do
|
||||
it "should render ERB right in the spec" do
|
||||
render :inline => %|<%= text_field_tag('field_name', 'Value') %>|
|
||||
response.should have_tag("input[type=?][name=?][value=?]","text","field_name","Value")
|
||||
end
|
||||
end
|
||||
|
||||
module Spec
|
||||
module Rails
|
||||
module Example
|
||||
describe ViewExampleGroup do
|
||||
it "should clear its name from the description" do
|
||||
group = describe("foo", :type => :view) do
|
||||
$nested_group = describe("bar") do
|
||||
end
|
||||
end
|
||||
group.description.to_s.should == "foo"
|
||||
$nested_group.description.to_s.should == "foo bar"
|
||||
end
|
||||
|
||||
it "should clear ActionView::Base.base_view_path on teardown" do
|
||||
group = describe("base_view_path_cleared flag", :type => :view) {}
|
||||
example = group.it{}
|
||||
|
||||
ActionView::Base.should_receive(:base_view_path=).with(nil)
|
||||
group.run_after_each(example)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
54
vendor/plugins/rspec-rails/spec/rails/extensions/action_controller_rescue_action_spec.rb
vendored
Normal file
54
vendor/plugins/rspec-rails/spec/rails/extensions/action_controller_rescue_action_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
module ActionController
|
||||
describe "Rescue", "#rescue_action in default mode" do
|
||||
before(:each) do
|
||||
@fixture = Object.new
|
||||
@fixture.extend ActionController::Rescue
|
||||
class << @fixture
|
||||
public :rescue_action
|
||||
end
|
||||
end
|
||||
|
||||
it "should raise the passed in exception so examples fail fast" do
|
||||
proc {@fixture.rescue_action(RuntimeError.new("Foobar"))}.should raise_error(RuntimeError, "Foobar")
|
||||
end
|
||||
end
|
||||
|
||||
class RescueOverriddenController < ActionController::Base
|
||||
def rescue_action(error)
|
||||
"successfully overridden"
|
||||
end
|
||||
end
|
||||
|
||||
describe "Rescue", "#rescue_action, when overridden" do
|
||||
before(:each) do
|
||||
@fixture = RescueOverriddenController.new
|
||||
end
|
||||
|
||||
it "should do whatever the overridden method does" do
|
||||
@fixture.rescue_action(RuntimeError.new("Foobar")).should == "successfully overridden"
|
||||
end
|
||||
end
|
||||
|
||||
class SearchController < ActionController::Base
|
||||
end
|
||||
|
||||
describe "Rescue", "#rescue_action when told to use rails error handling" do
|
||||
before(:each) do
|
||||
@controller = SearchController.new
|
||||
@controller.use_rails_error_handling!
|
||||
class << @controller
|
||||
public :rescue_action
|
||||
end
|
||||
end
|
||||
|
||||
it "should use Rails exception handling" do
|
||||
exception = RuntimeError.new("The Error")
|
||||
exception.stub!(:backtrace).and_return(caller)
|
||||
@controller.should_receive(:rescue_action_locally).with(exception)
|
||||
|
||||
@controller.rescue_action(exception)
|
||||
end
|
||||
end
|
||||
end
|
||||
48
vendor/plugins/rspec-rails/spec/rails/extensions/action_view_base_spec.rb
vendored
Normal file
48
vendor/plugins/rspec-rails/spec/rails/extensions/action_view_base_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require 'spec/mocks/errors'
|
||||
|
||||
describe ActionView::Base, "with RSpec extensions:", :type => :view do
|
||||
|
||||
describe "expect_render" do
|
||||
it "should not raise when render has been received" do
|
||||
template.expect_render(:partial => "name")
|
||||
template.render :partial => "name"
|
||||
end
|
||||
|
||||
it "should raise when render has NOT been received" do
|
||||
template.expect_render(:partial => "name")
|
||||
lambda {
|
||||
template.verify_rendered
|
||||
}.should raise_error
|
||||
end
|
||||
|
||||
it "should return something (like a normal mock)" do
|
||||
template.expect_render(:partial => "name").and_return("Little Johnny")
|
||||
result = template.render :partial => "name"
|
||||
result.should == "Little Johnny"
|
||||
end
|
||||
end
|
||||
|
||||
describe "stub_render" do
|
||||
it "should not raise when stubbing and render has been received" do
|
||||
template.stub_render(:partial => "name")
|
||||
template.render :partial => "name"
|
||||
end
|
||||
|
||||
it "should not raise when stubbing and render has NOT been received" do
|
||||
template.stub_render(:partial => "name")
|
||||
end
|
||||
|
||||
it "should not raise when stubbing and render has been received with different options" do
|
||||
template.stub_render(:partial => "name")
|
||||
template.render :partial => "view_spec/spacer"
|
||||
end
|
||||
|
||||
it "should not raise when stubbing and expecting and render has been received" do
|
||||
template.stub_render(:partial => "name")
|
||||
template.expect_render(:partial => "name")
|
||||
template.render(:partial => "name")
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
14
vendor/plugins/rspec-rails/spec/rails/extensions/active_record_spec.rb
vendored
Normal file
14
vendor/plugins/rspec-rails/spec/rails/extensions/active_record_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
describe "A model" do
|
||||
fixtures :things
|
||||
it "should tell you its required fields" do
|
||||
Thing.new.should have(1).error_on(:name)
|
||||
end
|
||||
|
||||
it "should tell you how many records it has" do
|
||||
Thing.should have(:no).records
|
||||
Thing.create(:name => "THE THING")
|
||||
Thing.should have(1).record
|
||||
end
|
||||
end
|
||||
806
vendor/plugins/rspec-rails/spec/rails/matchers/assert_select_spec.rb
vendored
Normal file
806
vendor/plugins/rspec-rails/spec/rails/matchers/assert_select_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,806 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
# assert_select plugins for Rails
|
||||
#
|
||||
# Copyright (c) 2006 Assaf Arkin, under Creative Commons Attribution and/or MIT License
|
||||
# Developed for http://co.mments.com
|
||||
# Code and documention: http://labnotes.org
|
||||
|
||||
class AssertSelectController < ActionController::Base
|
||||
|
||||
def response=(content)
|
||||
@content = content
|
||||
end
|
||||
|
||||
#NOTE - this is commented because response is implemented in lib/spec/rails/context/controller
|
||||
# def response(&block)
|
||||
# @update = block
|
||||
# end
|
||||
#
|
||||
def html()
|
||||
render :text=>@content, :layout=>false, :content_type=>Mime::HTML
|
||||
@content = nil
|
||||
end
|
||||
|
||||
def rjs()
|
||||
update = @update
|
||||
render :update do |page|
|
||||
update.call page
|
||||
end
|
||||
@update = nil
|
||||
end
|
||||
|
||||
def xml()
|
||||
render :text=>@content, :layout=>false, :content_type=>Mime::XML
|
||||
@content = nil
|
||||
end
|
||||
|
||||
def rescue_action(e)
|
||||
raise e
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class AssertSelectMailer < ActionMailer::Base
|
||||
|
||||
def test(html)
|
||||
recipients "test <test@test.host>"
|
||||
from "test@test.host"
|
||||
subject "Test e-mail"
|
||||
part :content_type=>"text/html", :body=>html
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
module AssertSelectSpecHelpers
|
||||
def render_html(html)
|
||||
@controller.response = html
|
||||
get :html
|
||||
end
|
||||
|
||||
def render_rjs(&block)
|
||||
clear_response
|
||||
@controller.response &block
|
||||
get :rjs
|
||||
end
|
||||
|
||||
def render_xml(xml)
|
||||
@controller.response = xml
|
||||
get :xml
|
||||
end
|
||||
|
||||
def first_non_rspec_line_in_backtrace_of(error)
|
||||
rspec_path = File.join('rspec', 'lib', 'spec')
|
||||
error.backtrace.reject { |line|
|
||||
line =~ /#{rspec_path}/
|
||||
}.first
|
||||
end
|
||||
|
||||
private
|
||||
# necessary for 1.2.1
|
||||
def clear_response
|
||||
render_html("")
|
||||
end
|
||||
end
|
||||
|
||||
unless defined?(SpecFailed)
|
||||
SpecFailed = Spec::Expectations::ExpectationNotMetError
|
||||
end
|
||||
|
||||
describe "should have_tag", :type => :controller do
|
||||
include AssertSelectSpecHelpers
|
||||
controller_name :assert_select
|
||||
integrate_views
|
||||
|
||||
it "should find specific numbers of elements" do
|
||||
render_html %Q{<div id="1"></div><div id="2"></div>}
|
||||
response.should have_tag( "div" )
|
||||
response.should have_tag("div", 2)
|
||||
lambda { response.should_not have_tag("div") }.should raise_error(SpecFailed, "should not have tag(\"div\"), but did")
|
||||
|
||||
lambda { response.should have_tag("div", 3) }.should raise_error(SpecFailed)
|
||||
lambda { response.should have_tag("p") }.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should expect to find elements when using true" do
|
||||
render_html %Q{<div id="1"></div><div id="2"></div>}
|
||||
response.should have_tag( "div", true )
|
||||
lambda { response.should have_tag( "p", true )}.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should expect to not find elements when using false" do
|
||||
render_html %Q{<div id="1"></div><div id="2"></div>}
|
||||
response.should have_tag( "p", false )
|
||||
lambda { response.should have_tag( "div", false )}.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
|
||||
it "should match submitted text using text or regexp" do
|
||||
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
||||
response.should have_tag("div", "foo")
|
||||
response.should have_tag("div", /(foo|bar)/)
|
||||
response.should have_tag("div", :text=>"foo")
|
||||
response.should have_tag("div", :text=>/(foo|bar)/)
|
||||
|
||||
lambda { response.should have_tag("div", "bar") }.should raise_error(SpecFailed)
|
||||
lambda { response.should have_tag("div", :text=>"bar") }.should raise_error(SpecFailed)
|
||||
lambda { response.should have_tag("p", :text=>"foo") }.should raise_error(SpecFailed)
|
||||
|
||||
lambda { response.should have_tag("div", /foobar/) }.should raise_error(SpecFailed)
|
||||
lambda { response.should have_tag("div", :text=>/foobar/) }.should raise_error(SpecFailed)
|
||||
lambda { response.should have_tag("p", :text=>/foo/) }.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should use submitted message" do
|
||||
render_html %Q{nothing here}
|
||||
lambda {
|
||||
response.should have_tag("div", {}, "custom message")
|
||||
}.should raise_error(SpecFailed, /custom message/)
|
||||
end
|
||||
|
||||
it "should match submitted html" do
|
||||
render_html %Q{<p>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</p>}
|
||||
text = "\"This is not a big problem,\" he said."
|
||||
html = "<em>\"This is <strong>not</strong> a big problem,\"</em> he said."
|
||||
response.should have_tag("p", text)
|
||||
lambda { response.should have_tag("p", html) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("p", :html=>html)
|
||||
lambda { response.should have_tag("p", :html=>text) }.should raise_error(SpecFailed)
|
||||
|
||||
# # No stripping for pre.
|
||||
render_html %Q{<pre>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</pre>}
|
||||
text = "\n\"This is not a big problem,\" he said.\n"
|
||||
html = "\n<em>\"This is <strong>not</strong> a big problem,\"</em> he said.\n"
|
||||
response.should have_tag("pre", text)
|
||||
lambda { response.should have_tag("pre", html) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("pre", :html=>html)
|
||||
lambda { response.should have_tag("pre", :html=>text) }.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should match number of instances" do
|
||||
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
||||
response.should have_tag("div", 2)
|
||||
lambda { response.should have_tag("div", 3) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("div", 1..2)
|
||||
lambda { response.should have_tag("div", 3..4) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("div", :count=>2)
|
||||
lambda { response.should have_tag("div", :count=>3) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("div", :minimum=>1)
|
||||
response.should have_tag("div", :minimum=>2)
|
||||
lambda { response.should have_tag("div", :minimum=>3) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("div", :maximum=>2)
|
||||
response.should have_tag("div", :maximum=>3)
|
||||
lambda { response.should have_tag("div", :maximum=>1) }.should raise_error(SpecFailed)
|
||||
response.should have_tag("div", :minimum=>1, :maximum=>2)
|
||||
lambda { response.should have_tag("div", :minimum=>3, :maximum=>4) }.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "substitution values" do
|
||||
render_html %Q{<div id="1">foo</div><div id="2">foo</div><span id="3"></span>}
|
||||
response.should have_tag("div#?", /\d+/) do |elements| #using do/end
|
||||
elements.size.should == 2
|
||||
end
|
||||
response.should have_tag("div#?", /\d+/) { |elements| #using {}
|
||||
elements.size.should == 2
|
||||
}
|
||||
lambda {
|
||||
response.should have_tag("div#?", /\d+/) do |elements|
|
||||
elements.size.should == 3
|
||||
end
|
||||
}.should raise_error(SpecFailed, "expected: 3,\n got: 2 (using ==)")
|
||||
|
||||
lambda {
|
||||
response.should have_tag("div#?", /\d+/) { |elements|
|
||||
elements.size.should == 3
|
||||
}
|
||||
}.should raise_error(SpecFailed, "expected: 3,\n got: 2 (using ==)")
|
||||
|
||||
response.should have_tag("div#?", /\d+/) do |elements|
|
||||
elements.size.should == 2
|
||||
with_tag("#1")
|
||||
with_tag("#2")
|
||||
without_tag("#3")
|
||||
end
|
||||
end
|
||||
|
||||
#added for RSpec
|
||||
it "nested tags in form" do
|
||||
render_html %Q{
|
||||
<form action="test">
|
||||
<input type="text" name="email">
|
||||
</form>
|
||||
<form action="other">
|
||||
<input type="text" name="other_input">
|
||||
</form>
|
||||
}
|
||||
response.should have_tag("form[action=test]") { |form|
|
||||
with_tag("input[type=text][name=email]")
|
||||
}
|
||||
response.should have_tag("form[action=test]") { |form|
|
||||
with_tag("input[type=text][name=email]")
|
||||
}
|
||||
|
||||
lambda {
|
||||
response.should have_tag("form[action=test]") { |form|
|
||||
with_tag("input[type=text][name=other_input]")
|
||||
}
|
||||
}.should raise_error(SpecFailed)
|
||||
|
||||
lambda {
|
||||
response.should have_tag("form[action=test]") {
|
||||
with_tag("input[type=text][name=other_input]")
|
||||
}
|
||||
}.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should report the correct line number for a nested failed expectation" do
|
||||
render_html %Q{
|
||||
<form action="test">
|
||||
<input type="text" name="email">
|
||||
</form>
|
||||
}
|
||||
begin
|
||||
response.should have_tag("form[action=test]") {
|
||||
@expected_error_line = __LINE__; should have_tag("input[type=text][name=other_input]")
|
||||
}
|
||||
rescue => e
|
||||
first_non_rspec_line_in_backtrace_of(e).should =~
|
||||
/#{File.basename(__FILE__)}:#{@expected_error_line}/
|
||||
else
|
||||
fail
|
||||
end
|
||||
end
|
||||
|
||||
it "should report the correct line number for a nested raised exception" do
|
||||
render_html %Q{
|
||||
<form action="test">
|
||||
<input type="text" name="email">
|
||||
</form>
|
||||
}
|
||||
begin
|
||||
response.should have_tag("form[action=test]") {
|
||||
@expected_error_line = __LINE__; raise "Failed!"
|
||||
}
|
||||
rescue => e
|
||||
first_non_rspec_line_in_backtrace_of(e).should =~
|
||||
/#{File.basename(__FILE__)}:#{@expected_error_line}/
|
||||
else
|
||||
fail
|
||||
end
|
||||
end
|
||||
|
||||
it "should report the correct line number for a nested failed test/unit assertion" do
|
||||
pending "Doesn't work at the moment. Do we want to support this?" do
|
||||
render_html %Q{
|
||||
<form action="test">
|
||||
<input type="text" name="email">
|
||||
</form>
|
||||
}
|
||||
begin
|
||||
response.should have_tag("form[action=test]") {
|
||||
@expected_error_line = __LINE__; assert false
|
||||
}
|
||||
rescue => e
|
||||
first_non_rspec_line_in_backtrace_of(e).should =~
|
||||
/#{File.basename(__FILE__)}:#{@expected_error_line}/
|
||||
else
|
||||
fail
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
it "beatles" do
|
||||
unless defined?(BEATLES)
|
||||
BEATLES = [
|
||||
["John", "Guitar"],
|
||||
["George", "Guitar"],
|
||||
["Paul", "Bass"],
|
||||
["Ringo", "Drums"]
|
||||
]
|
||||
end
|
||||
|
||||
render_html %Q{
|
||||
<div id="beatles">
|
||||
<div class="beatle">
|
||||
<h2>John</h2><p>Guitar</p>
|
||||
</div>
|
||||
<div class="beatle">
|
||||
<h2>George</h2><p>Guitar</p>
|
||||
</div>
|
||||
<div class="beatle">
|
||||
<h2>Paul</h2><p>Bass</p>
|
||||
</div>
|
||||
<div class="beatle">
|
||||
<h2>Ringo</h2><p>Drums</p>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
response.should have_tag("div#beatles>div[class=\"beatle\"]", 4)
|
||||
|
||||
response.should have_tag("div#beatles>div.beatle") {
|
||||
BEATLES.each { |name, instrument|
|
||||
with_tag("div.beatle>h2", name)
|
||||
with_tag("div.beatle>p", instrument)
|
||||
without_tag("div.beatle>span")
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it "assert_select_text_match" do
|
||||
render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
|
||||
response.should have_tag("div") do |divs|
|
||||
with_tag("div", "foo")
|
||||
with_tag("div", "bar")
|
||||
with_tag("div", /\w*/)
|
||||
with_tag("div", /\w*/, :count=>2)
|
||||
without_tag("div", :text=>"foo", :count=>2)
|
||||
with_tag("div", :html=>"<span>bar</span>")
|
||||
with_tag("div", :html=>"<span>bar</span>")
|
||||
with_tag("div", :html=>/\w*/)
|
||||
with_tag("div", :html=>/\w*/, :count=>2)
|
||||
without_tag("div", :html=>"<span>foo</span>", :count=>2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
it "assert_select_from_rjs with one item" do
|
||||
render_rjs do |page|
|
||||
page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
|
||||
end
|
||||
response.should have_tag("div") { |elements|
|
||||
elements.size.should == 2
|
||||
with_tag("#1")
|
||||
with_tag("#2")
|
||||
}
|
||||
|
||||
lambda {
|
||||
response.should have_tag("div") { |elements|
|
||||
elements.size.should == 2
|
||||
with_tag("#1")
|
||||
with_tag("#3")
|
||||
}
|
||||
}.should raise_error(SpecFailed)
|
||||
|
||||
lambda {
|
||||
response.should have_tag("div") { |elements|
|
||||
elements.size.should == 2
|
||||
with_tag("#1")
|
||||
without_tag("#2")
|
||||
}
|
||||
}.should raise_error(SpecFailed, "should not have tag(\"#2\"), but did")
|
||||
|
||||
lambda {
|
||||
response.should have_tag("div") { |elements|
|
||||
elements.size.should == 3
|
||||
with_tag("#1")
|
||||
with_tag("#2")
|
||||
}
|
||||
}.should raise_error(SpecFailed)
|
||||
|
||||
|
||||
response.should have_tag("div#?", /\d+/) { |elements|
|
||||
with_tag("#1")
|
||||
with_tag("#2")
|
||||
}
|
||||
end
|
||||
|
||||
it "assert_select_from_rjs with multiple items" do
|
||||
render_rjs do |page|
|
||||
page.replace_html "test", "<div id=\"1\">foo</div>"
|
||||
page.replace_html "test2", "<div id=\"2\">foo</div>"
|
||||
end
|
||||
response.should have_tag("div")
|
||||
response.should have_tag("div") { |elements|
|
||||
elements.size.should == 2
|
||||
with_tag("#1")
|
||||
with_tag("#2")
|
||||
}
|
||||
|
||||
lambda {
|
||||
response.should have_tag("div") { |elements|
|
||||
with_tag("#3")
|
||||
}
|
||||
}.should raise_error(SpecFailed)
|
||||
end
|
||||
end
|
||||
|
||||
describe "css_select", :type => :controller do
|
||||
include AssertSelectSpecHelpers
|
||||
controller_name :assert_select
|
||||
integrate_views
|
||||
|
||||
it "can select tags from html" do
|
||||
render_html %Q{<div id="1"></div><div id="2"></div>}
|
||||
css_select("div").size.should == 2
|
||||
css_select("p").size.should == 0
|
||||
end
|
||||
|
||||
|
||||
it "can select nested tags from html" do
|
||||
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
||||
response.should have_tag("div#?", /\d+/) { |elements|
|
||||
css_select(elements[0], "div").should have(1).element
|
||||
css_select(elements[1], "div").should have(1).element
|
||||
}
|
||||
response.should have_tag("div") {
|
||||
css_select("div").should have(2).elements
|
||||
css_select("div").each { |element|
|
||||
# Testing as a group is one thing
|
||||
css_select("#1,#2").should have(2).elements
|
||||
# Testing individually is another
|
||||
css_select("#1").should have(1).element
|
||||
css_select("#2").should have(1).element
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it "can select nested tags from rjs (one result)" do
|
||||
render_rjs do |page|
|
||||
page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
|
||||
end
|
||||
css_select("div").should have(2).elements
|
||||
css_select("#1").should have(1).element
|
||||
css_select("#2").should have(1).element
|
||||
end
|
||||
|
||||
it "can select nested tags from rjs (two results)" do
|
||||
render_rjs do |page|
|
||||
page.replace_html "test", "<div id=\"1\">foo</div>"
|
||||
page.replace_html "test2", "<div id=\"2\">foo</div>"
|
||||
end
|
||||
css_select("div").should have(2).elements
|
||||
css_select("#1").should have(1).element
|
||||
css_select("#2").should have(1).element
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "have_rjs behaviour_type", :type => :controller do
|
||||
include AssertSelectSpecHelpers
|
||||
controller_name :assert_select
|
||||
integrate_views
|
||||
|
||||
before(:each) do
|
||||
render_rjs do |page|
|
||||
page.replace "test1", "<div id=\"1\">foo</div>"
|
||||
page.replace_html "test2", "<div id=\"2\">bar</div><div id=\"3\">none</div>"
|
||||
page.insert_html :top, "test3", "<div id=\"4\">loopy</div>"
|
||||
page.hide "test4"
|
||||
page["test5"].hide
|
||||
end
|
||||
end
|
||||
|
||||
it "should pass if any rjs exists" do
|
||||
response.should have_rjs
|
||||
end
|
||||
|
||||
it "should fail if no rjs exists" do
|
||||
render_rjs do |page|
|
||||
end
|
||||
lambda do
|
||||
response.should have_rjs
|
||||
end.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should find all rjs from multiple statements" do
|
||||
response.should have_rjs do
|
||||
with_tag("#1")
|
||||
with_tag("#2")
|
||||
with_tag("#3")
|
||||
# with_tag("#4")
|
||||
# with_tag("#5")
|
||||
end
|
||||
end
|
||||
|
||||
it "should find by id" do
|
||||
response.should have_rjs("test1") { |rjs|
|
||||
rjs.size.should == 1
|
||||
with_tag("div", 1)
|
||||
with_tag("div#1", "foo")
|
||||
}
|
||||
|
||||
lambda do
|
||||
response.should have_rjs("test1") { |rjs|
|
||||
rjs.size.should == 1
|
||||
without_tag("div#1", "foo")
|
||||
}
|
||||
end.should raise_error(SpecFailed, "should not have tag(\"div#1\", \"foo\"), but did")
|
||||
|
||||
response.should have_rjs("test2") { |rjs|
|
||||
rjs.size.should == 2
|
||||
with_tag("div", 2)
|
||||
with_tag("div#2", "bar")
|
||||
with_tag("div#3", "none")
|
||||
}
|
||||
# response.should have_rjs("test4")
|
||||
# response.should have_rjs("test5")
|
||||
end
|
||||
|
||||
# specify "should find rjs using :hide" do
|
||||
# response.should have_rjs(:hide)
|
||||
# response.should have_rjs(:hide, "test4")
|
||||
# response.should have_rjs(:hide, "test5")
|
||||
# lambda do
|
||||
# response.should have_rjs(:hide, "test3")
|
||||
# end.should raise_error(SpecFailed)
|
||||
# end
|
||||
|
||||
it "should find rjs using :replace" do
|
||||
response.should have_rjs(:replace) { |rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("div#1", "foo")
|
||||
}
|
||||
response.should have_rjs(:replace, "test1") { |rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("div#1", "foo")
|
||||
}
|
||||
lambda {
|
||||
response.should have_rjs(:replace, "test2")
|
||||
}.should raise_error(SpecFailed)
|
||||
|
||||
lambda {
|
||||
response.should have_rjs(:replace, "test3")
|
||||
}.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should find rjs using :replace_html" do
|
||||
response.should have_rjs(:replace_html) { |rjs|
|
||||
with_tag("div", 2)
|
||||
with_tag("div#2", "bar")
|
||||
with_tag("div#3", "none")
|
||||
}
|
||||
|
||||
response.should have_rjs(:replace_html, "test2") { |rjs|
|
||||
with_tag("div", 2)
|
||||
with_tag("div#2", "bar")
|
||||
with_tag("div#3", "none")
|
||||
}
|
||||
|
||||
lambda {
|
||||
response.should have_rjs(:replace_html, "test1")
|
||||
}.should raise_error(SpecFailed)
|
||||
|
||||
lambda {
|
||||
response.should have_rjs(:replace_html, "test3")
|
||||
}.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should find rjs using :insert_html (non-positioned)" do
|
||||
response.should have_rjs(:insert_html) { |rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("div#4", "loopy")
|
||||
}
|
||||
|
||||
response.should have_rjs(:insert_html, "test3") { |rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("div#4", "loopy")
|
||||
}
|
||||
|
||||
lambda {
|
||||
response.should have_rjs(:insert_html, "test1")
|
||||
}.should raise_error(SpecFailed)
|
||||
|
||||
lambda {
|
||||
response.should have_rjs(:insert_html, "test2")
|
||||
}.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should find rjs using :insert (positioned)" do
|
||||
render_rjs do |page|
|
||||
page.insert_html :top, "test1", "<div id=\"1\">foo</div>"
|
||||
page.insert_html :bottom, "test2", "<div id=\"2\">bar</div>"
|
||||
page.insert_html :before, "test3", "<div id=\"3\">none</div>"
|
||||
page.insert_html :after, "test4", "<div id=\"4\">loopy</div>"
|
||||
end
|
||||
response.should have_rjs(:insert, :top) do
|
||||
with_tag("div", 1)
|
||||
with_tag("#1")
|
||||
end
|
||||
response.should have_rjs(:insert, :top, "test1") do
|
||||
with_tag("div", 1)
|
||||
with_tag("#1")
|
||||
end
|
||||
lambda {
|
||||
response.should have_rjs(:insert, :top, "test2")
|
||||
}.should raise_error(SpecFailed)
|
||||
response.should have_rjs(:insert, :bottom) {|rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("#2")
|
||||
}
|
||||
response.should have_rjs(:insert, :bottom, "test2") {|rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("#2")
|
||||
}
|
||||
response.should have_rjs(:insert, :before) {|rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("#3")
|
||||
}
|
||||
response.should have_rjs(:insert, :before, "test3") {|rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("#3")
|
||||
}
|
||||
response.should have_rjs(:insert, :after) {|rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("#4")
|
||||
}
|
||||
response.should have_rjs(:insert, :after, "test4") {|rjs|
|
||||
with_tag("div", 1)
|
||||
with_tag("#4")
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
describe "send_email behaviour_type", :type => :controller do
|
||||
include AssertSelectSpecHelpers
|
||||
controller_name :assert_select
|
||||
integrate_views
|
||||
|
||||
before(:each) do
|
||||
ActionMailer::Base.delivery_method = :test
|
||||
ActionMailer::Base.perform_deliveries = true
|
||||
ActionMailer::Base.deliveries = []
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
ActionMailer::Base.deliveries.clear
|
||||
end
|
||||
|
||||
it "should fail with nothing sent" do
|
||||
response.should_not send_email
|
||||
lambda {
|
||||
response.should send_email{}
|
||||
}.should raise_error(SpecFailed, /No e-mail in delivery list./)
|
||||
end
|
||||
|
||||
it "should pass otherwise" do
|
||||
AssertSelectMailer.deliver_test "<div><p>foo</p><p>bar</p></div>"
|
||||
response.should send_email
|
||||
lambda {
|
||||
response.should_not send_email
|
||||
}.should raise_error(SpecFailed)
|
||||
response.should send_email{}
|
||||
response.should send_email {
|
||||
with_tag("div:root") {
|
||||
with_tag("p:first-child", "foo")
|
||||
with_tag("p:last-child", "bar")
|
||||
}
|
||||
}
|
||||
|
||||
lambda {
|
||||
response.should_not send_email
|
||||
}.should raise_error(SpecFailed, "should not send email, but did")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# describe "An rjs call to :visual_effect, a 'should have_rjs' spec with",
|
||||
# :type => :view do
|
||||
#
|
||||
# before do
|
||||
# render 'rjs_spec/visual_effect'
|
||||
# end
|
||||
#
|
||||
# it "should pass with the correct element name" do
|
||||
# response.should have_rjs(:effect, :fade, 'mydiv')
|
||||
# end
|
||||
#
|
||||
# it "should fail the wrong element name" do
|
||||
# lambda {
|
||||
# response.should have_rjs(:effect, :fade, 'wrongname')
|
||||
# }.should raise_error(SpecFailed)
|
||||
# end
|
||||
#
|
||||
# it "should fail with the correct element but the wrong command" do
|
||||
# lambda {
|
||||
# response.should have_rjs(:effect, :puff, 'mydiv')
|
||||
# }.should raise_error(SpecFailed)
|
||||
# end
|
||||
#
|
||||
# end
|
||||
#
|
||||
# describe "An rjs call to :visual_effect for a toggle, a 'should have_rjs' spec with",
|
||||
# :type => :view do
|
||||
#
|
||||
# before do
|
||||
# render 'rjs_spec/visual_toggle_effect'
|
||||
# end
|
||||
#
|
||||
# it "should pass with the correct element name" do
|
||||
# response.should have_rjs(:effect, :toggle_blind, 'mydiv')
|
||||
# end
|
||||
#
|
||||
# it "should fail with the wrong element name" do
|
||||
# lambda {
|
||||
# response.should have_rjs(:effect, :toggle_blind, 'wrongname')
|
||||
# }.should raise_error(SpecFailed)
|
||||
# end
|
||||
#
|
||||
# it "should fail the correct element but the wrong command" do
|
||||
# lambda {
|
||||
# response.should have_rjs(:effect, :puff, 'mydiv')
|
||||
# }.should raise_error(SpecFailed)
|
||||
# end
|
||||
#
|
||||
# end
|
||||
|
||||
describe "string.should have_tag", :type => :helper do
|
||||
include AssertSelectSpecHelpers
|
||||
|
||||
it "should find root element" do
|
||||
"<p>a paragraph</p>".should have_tag("p", "a paragraph")
|
||||
end
|
||||
|
||||
it "should not find non-existent element" do
|
||||
lambda do
|
||||
"<p>a paragraph</p>".should have_tag("p", "wrong text")
|
||||
end.should raise_error(SpecFailed)
|
||||
end
|
||||
|
||||
it "should find child element" do
|
||||
"<div><p>a paragraph</p></div>".should have_tag("p", "a paragraph")
|
||||
end
|
||||
|
||||
it "should find nested element" do
|
||||
"<div><p>a paragraph</p></div>".should have_tag("div") do
|
||||
with_tag("p", "a paragraph")
|
||||
end
|
||||
end
|
||||
|
||||
it "should not find wrong nested element" do
|
||||
lambda do
|
||||
"<div><p>a paragraph</p></div>".should have_tag("div") do
|
||||
with_tag("p", "wrong text")
|
||||
end
|
||||
end.should raise_error(SpecFailed)
|
||||
end
|
||||
end
|
||||
|
||||
describe "have_tag", :type => :controller do
|
||||
include AssertSelectSpecHelpers
|
||||
controller_name :assert_select
|
||||
integrate_views
|
||||
|
||||
it "should work exactly the same as assert_select" do
|
||||
render_html %Q{
|
||||
<div id="wrapper">foo
|
||||
<div class="piece">
|
||||
<h3>Text</h3>
|
||||
</div>
|
||||
<div class="piece">
|
||||
<h3>Another</h3>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
assert_select "#wrapper .piece h3", :text => "Text"
|
||||
assert_select "#wrapper .piece h3", :text => "Another"
|
||||
|
||||
response.should have_tag("#wrapper .piece h3", :text => "Text")
|
||||
response.should have_tag("#wrapper .piece h3", :text => "Another")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'selecting in HTML that contains a mock with null_object' do
|
||||
module HTML
|
||||
class Document
|
||||
def initialize_with_strict_error_checking(text, strict=false, xml=false)
|
||||
initialize_without_strict_error_checking(text, true, xml)
|
||||
end
|
||||
alias_method :initialize_without_strict_error_checking, :initialize
|
||||
alias_method :initialize, :initialize_with_strict_error_checking
|
||||
end
|
||||
end
|
||||
|
||||
describe 'modified HTML::Document' do
|
||||
it 'should raise error on valid HTML even though false is specified' do
|
||||
lambda {HTML::Document.new("<b>#<Spec::Mocks::Mock:0x267b4f0></b>", false, false)}.should raise_error
|
||||
end
|
||||
end
|
||||
|
||||
it 'should not print errors from assert_select' do
|
||||
mock = mock("Dog", :null_object => true)
|
||||
html = "<b>#{mock.colour}</b>"
|
||||
lambda {html.should have_tag('b')}.should_not raise_error
|
||||
end
|
||||
end
|
||||
37
vendor/plugins/rspec-rails/spec/rails/matchers/description_generation_spec.rb
vendored
Normal file
37
vendor/plugins/rspec-rails/spec/rails/matchers/description_generation_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
class DescriptionGenerationSpecController < ActionController::Base
|
||||
def render_action
|
||||
end
|
||||
|
||||
def redirect_action
|
||||
redirect_to :action => :render_action
|
||||
end
|
||||
end
|
||||
|
||||
describe "Description generation", :type => :controller do
|
||||
controller_name :description_generation_spec
|
||||
|
||||
after(:each) do
|
||||
Spec::Matchers.clear_generated_description
|
||||
end
|
||||
|
||||
it "should generate description for render_template" do
|
||||
get 'render_action'
|
||||
response.should render_template("render_action")
|
||||
Spec::Matchers.generated_description.should == "should render template \"render_action\""
|
||||
end
|
||||
|
||||
it "should generate description for render_template with full path" do
|
||||
get 'render_action'
|
||||
response.should render_template("description_generation_spec/render_action")
|
||||
Spec::Matchers.generated_description.should == "should render template \"description_generation_spec/render_action\""
|
||||
end
|
||||
|
||||
it "should generate description for redirect_to" do
|
||||
get 'redirect_action'
|
||||
response.should redirect_to("http://test.host/description_generation_spec/render_action")
|
||||
Spec::Matchers.generated_description.should == "should redirect to \"http://test.host/description_generation_spec/render_action\""
|
||||
end
|
||||
|
||||
end
|
||||
13
vendor/plugins/rspec-rails/spec/rails/matchers/errors_on_spec.rb
vendored
Normal file
13
vendor/plugins/rspec-rails/spec/rails/matchers/errors_on_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
describe "error_on" do
|
||||
it "should provide a message including the name of what the error is on" do
|
||||
have(1).error_on(:whatever).description.should == "should have 1 error on :whatever"
|
||||
end
|
||||
end
|
||||
|
||||
describe "errors_on" do
|
||||
it "should provide a message including the name of what the error is on" do
|
||||
have(2).errors_on(:whatever).description.should == "should have 2 errors on :whatever"
|
||||
end
|
||||
end
|
||||
62
vendor/plugins/rspec-rails/spec/rails/matchers/have_text_spec.rb
vendored
Normal file
62
vendor/plugins/rspec-rails/spec/rails/matchers/have_text_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
||||
|
||||
describe "have_text" do
|
||||
|
||||
describe "where target is a Regexp" do
|
||||
it 'should should match submitted text using a regexp' do
|
||||
string = 'foo'
|
||||
string.should have_text(/fo*/)
|
||||
end
|
||||
end
|
||||
|
||||
describe "where target is a String" do
|
||||
it 'should match submitted text using a string' do
|
||||
string = 'foo'
|
||||
string.should have_text('foo')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "have_text",
|
||||
:type => :controller do
|
||||
['isolation','integration'].each do |mode|
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
|
||||
describe "where target is a response (in #{mode} mode)" do
|
||||
controller_name :render_spec
|
||||
|
||||
it "should pass with exactly matching text" do
|
||||
post 'text_action'
|
||||
response.should have_text("this is the text for this action")
|
||||
end
|
||||
|
||||
it "should pass with matching text (using Regexp)" do
|
||||
post 'text_action'
|
||||
response.should have_text(/is the text/)
|
||||
end
|
||||
|
||||
it "should fail with matching text" do
|
||||
post 'text_action'
|
||||
lambda {
|
||||
response.should have_text("this is NOT the text for this action")
|
||||
}.should fail_with("expected \"this is NOT the text for this action\", got \"this is the text for this action\"")
|
||||
end
|
||||
|
||||
it "should fail when a template is rendered" do
|
||||
post 'some_action'
|
||||
lambda {
|
||||
response.should have_text("this is the text for this action")
|
||||
}.should fail_with(/expected \"this is the text for this action\", got .*/)
|
||||
end
|
||||
|
||||
it "should pass using should_not with incorrect text" do
|
||||
post 'text_action'
|
||||
response.should_not have_text("the accordian guy")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
70
vendor/plugins/rspec-rails/spec/rails/matchers/include_text_spec.rb
vendored
Normal file
70
vendor/plugins/rspec-rails/spec/rails/matchers/include_text_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
||||
|
||||
describe "include_text" do
|
||||
|
||||
describe "where target is a String" do
|
||||
it 'should match submitted text using a string' do
|
||||
string = 'foo'
|
||||
string.should include_text('foo')
|
||||
end
|
||||
|
||||
it 'should match if the text is contained' do
|
||||
string = 'I am a big piece of text'
|
||||
string.should include_text('big piece')
|
||||
end
|
||||
|
||||
it 'should not match if text is not contained' do
|
||||
string = 'I am a big piece of text'
|
||||
string.should_not include_text('corey')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "include_text", :type => :controller do
|
||||
['isolation','integration'].each do |mode|
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
|
||||
describe "where target is a response (in #{mode} mode)" do
|
||||
controller_name :render_spec
|
||||
|
||||
it "should pass with exactly matching text" do
|
||||
post 'text_action'
|
||||
response.should include_text("this is the text for this action")
|
||||
end
|
||||
|
||||
it 'should pass with substring matching text' do
|
||||
post 'text_action'
|
||||
response.should include_text('text for this')
|
||||
end
|
||||
|
||||
it "should fail with matching text" do
|
||||
post 'text_action'
|
||||
lambda {
|
||||
response.should include_text("this is NOT the text for this action")
|
||||
}.should fail_with("expected to find \"this is NOT the text for this action\" in \"this is the text for this action\"")
|
||||
end
|
||||
|
||||
it "should fail when a template is rendered" do
|
||||
post 'some_action'
|
||||
failure_message = case mode
|
||||
when 'isolation'
|
||||
/expected to find \"this is the text for this action\" in \"render_spec\/some_action\"/
|
||||
when 'integration'
|
||||
/expected to find \"this is the text for this action\" in \"\"/
|
||||
end
|
||||
lambda {
|
||||
response.should include_text("this is the text for this action")
|
||||
}.should fail_with(failure_message)
|
||||
end
|
||||
|
||||
it "should pass using should_not with incorrect text" do
|
||||
post 'text_action'
|
||||
response.should_not include_text("the accordian guy")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
209
vendor/plugins/rspec-rails/spec/rails/matchers/redirect_to_spec.rb
vendored
Normal file
209
vendor/plugins/rspec-rails/spec/rails/matchers/redirect_to_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
['isolation','integration'].each do |mode|
|
||||
describe "redirect_to behaviour", :type => :controller do
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
controller_name :redirect_spec
|
||||
|
||||
it "redirected to another action" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should redirect_to(:action => 'somewhere')
|
||||
end
|
||||
|
||||
it "redirected to another controller and action" do
|
||||
get 'action_with_redirect_to_other_somewhere'
|
||||
response.should redirect_to(:controller => 'render_spec', :action => 'text_action')
|
||||
end
|
||||
|
||||
it "redirected to another action (with 'and return')" do
|
||||
get 'action_with_redirect_to_somewhere_and_return'
|
||||
response.should redirect_to(:action => 'somewhere')
|
||||
end
|
||||
|
||||
it "redirected from an SSL action to a non-SSL action" do
|
||||
request.stub!(:ssl?).and_return true
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should redirect_to(:action => 'somewhere')
|
||||
end
|
||||
|
||||
it "redirected to correct path with leading /" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should redirect_to('/redirect_spec/somewhere')
|
||||
end
|
||||
|
||||
it "redirected to correct path without leading /" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should redirect_to('redirect_spec/somewhere')
|
||||
end
|
||||
|
||||
it "redirected to correct internal URL" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should redirect_to("http://test.host/redirect_spec/somewhere")
|
||||
end
|
||||
|
||||
it "redirected to correct external URL" do
|
||||
get 'action_with_redirect_to_rspec_site'
|
||||
response.should redirect_to("http://rspec.rubyforge.org")
|
||||
end
|
||||
|
||||
it "redirected :back" do
|
||||
request.env['HTTP_REFERER'] = "http://test.host/previous/page"
|
||||
get 'action_with_redirect_back'
|
||||
response.should redirect_to(:back)
|
||||
end
|
||||
|
||||
it "redirected :back and should redirect_to URL matches" do
|
||||
request.env['HTTP_REFERER'] = "http://test.host/previous/page"
|
||||
get 'action_with_redirect_back'
|
||||
response.should redirect_to("http://test.host/previous/page")
|
||||
end
|
||||
|
||||
it "redirected from within a respond_to block" do
|
||||
get 'action_with_redirect_in_respond_to'
|
||||
response.should redirect_to('redirect_spec/somewhere')
|
||||
end
|
||||
|
||||
params_as_hash = {:action => "somewhere", :id => 1111, :param1 => "value1", :param2 => "value2"}
|
||||
|
||||
it "redirected to an internal URL containing a query string" do
|
||||
get "action_with_redirect_which_creates_query_string"
|
||||
response.should redirect_to(params_as_hash)
|
||||
end
|
||||
|
||||
it "redirected to an internal URL containing a query string, one way it might be generated" do
|
||||
get "action_with_redirect_with_query_string_order1"
|
||||
response.should redirect_to(params_as_hash)
|
||||
end
|
||||
|
||||
it "redirected to an internal URL containing a query string, another way it might be generated" do
|
||||
get "action_with_redirect_with_query_string_order2"
|
||||
response.should redirect_to(params_as_hash)
|
||||
end
|
||||
|
||||
it "redirected to an internal URL which is unroutable but matched via a string" do
|
||||
get "action_with_redirect_to_unroutable_url_inside_app"
|
||||
response.should redirect_to("http://test.host/nonexistant/none")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
describe "redirect_to with a controller spec in #{mode} mode and a custom request.host", :type => :controller do
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
controller_name :redirect_spec
|
||||
before do
|
||||
request.host = "some.custom.host"
|
||||
end
|
||||
|
||||
it "should pass when redirected to another action" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should redirect_to(:action => 'somewhere')
|
||||
end
|
||||
end
|
||||
|
||||
describe "Given a controller spec in #{mode} mode", :type => :controller do
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
controller_name :redirect_spec
|
||||
|
||||
it "an action that redirects should not result in an error if no should redirect_to expectation is called" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
end
|
||||
|
||||
it "an action that redirects should not result in an error if should_not redirect_to expectation was called, but not to that action" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
response.should_not redirect_to(:action => 'another_destination')
|
||||
end
|
||||
|
||||
it "an action that redirects should result in an error if should_not redirect_to expectation was called to that action" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
lambda {
|
||||
response.should_not redirect_to(:action => 'somewhere')
|
||||
}.should fail_with("expected not to be redirected to {:action=>\"somewhere\"}, but was")
|
||||
end
|
||||
|
||||
it "an action that does not redirects should not result in an error if should_not redirect_to expectation was called" do
|
||||
get 'action_with_no_redirect'
|
||||
response.should_not redirect_to(:action => 'any_destination')
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
describe "Given a controller spec in #{mode} mode, should redirect_to should fail when", :type => :controller do
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
controller_name :redirect_spec
|
||||
|
||||
it "redirected to wrong action" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
lambda {
|
||||
response.should redirect_to(:action => 'somewhere_else')
|
||||
}.should fail_with("expected redirect to {:action=>\"somewhere_else\"}, got redirect to \"http://test.host/redirect_spec/somewhere\"")
|
||||
end
|
||||
|
||||
it "redirected to incorrect path with leading /" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
lambda {
|
||||
response.should redirect_to('/redirect_spec/somewhere_else')
|
||||
}.should fail_with('expected redirect to "/redirect_spec/somewhere_else", got redirect to "http://test.host/redirect_spec/somewhere"')
|
||||
end
|
||||
|
||||
it "redirected to incorrect path without leading /" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
lambda {
|
||||
response.should redirect_to('redirect_spec/somewhere_else')
|
||||
}.should fail_with('expected redirect to "redirect_spec/somewhere_else", got redirect to "http://test.host/redirect_spec/somewhere"')
|
||||
end
|
||||
|
||||
it "redirected to incorrect internal URL (based on the action)" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
lambda {
|
||||
response.should redirect_to("http://test.host/redirect_spec/somewhere_else")
|
||||
}.should fail_with('expected redirect to "http://test.host/redirect_spec/somewhere_else", got redirect to "http://test.host/redirect_spec/somewhere"')
|
||||
end
|
||||
|
||||
it "redirected to wrong external URL" do
|
||||
get 'action_with_redirect_to_rspec_site'
|
||||
lambda {
|
||||
response.should redirect_to("http://test.unit.rubyforge.org")
|
||||
}.should fail_with('expected redirect to "http://test.unit.rubyforge.org", got redirect to "http://rspec.rubyforge.org"')
|
||||
end
|
||||
|
||||
it "redirected to incorrect internal URL (based on the directory path)" do
|
||||
get 'action_with_redirect_to_somewhere'
|
||||
lambda {
|
||||
response.should redirect_to("http://test.host/non_existent_controller/somewhere")
|
||||
}.should fail_with('expected redirect to "http://test.host/non_existent_controller/somewhere", got redirect to "http://test.host/redirect_spec/somewhere"')
|
||||
end
|
||||
|
||||
it "expected redirect :back, but redirected to a new URL" do
|
||||
get 'action_with_no_redirect'
|
||||
lambda {
|
||||
response.should redirect_to(:back)
|
||||
}.should fail_with('expected redirect to :back, got no redirect')
|
||||
end
|
||||
|
||||
it "no redirect at all" do
|
||||
get 'action_with_no_redirect'
|
||||
lambda {
|
||||
response.should redirect_to(:action => 'nowhere')
|
||||
}.should fail_with("expected redirect to {:action=>\"nowhere\"}, got no redirect")
|
||||
end
|
||||
|
||||
it "redirected to an internal URL which is unroutable and matched via a hash" do
|
||||
get "action_with_redirect_to_unroutable_url_inside_app"
|
||||
route = {:controller => "nonexistant", :action => "none"}
|
||||
lambda {
|
||||
response.should redirect_to(route)
|
||||
}.should raise_error(ActionController::RoutingError, /(no route found to match|No route matches) \"\/nonexistant\/none\" with \{\}/)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
169
vendor/plugins/rspec-rails/spec/rails/matchers/render_spec.rb
vendored
Normal file
169
vendor/plugins/rspec-rails/spec/rails/matchers/render_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
|
||||
['isolation','integration'].each do |mode|
|
||||
describe "response.should render_template (in #{mode} mode)",
|
||||
:type => :controller do
|
||||
controller_name :render_spec
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
|
||||
it "should match a simple path" do
|
||||
post 'some_action'
|
||||
response.should render_template('some_action')
|
||||
end
|
||||
|
||||
it "should match a less simple path" do
|
||||
post 'some_action'
|
||||
response.should render_template('render_spec/some_action')
|
||||
end
|
||||
|
||||
it "should match a less simple path to another controller" do
|
||||
post 'action_which_renders_template_from_other_controller'
|
||||
response.should render_template('controller_spec/action_with_template')
|
||||
end
|
||||
|
||||
it "should match a symbol" do
|
||||
post 'some_action'
|
||||
response.should render_template(:some_action)
|
||||
end
|
||||
|
||||
it "should match an rjs template" do
|
||||
xhr :post, 'some_action'
|
||||
if Rails::VERSION::STRING < "2.0.0"
|
||||
response.should render_template('render_spec/some_action.rjs')
|
||||
else
|
||||
response.should render_template('render_spec/some_action')
|
||||
end
|
||||
end
|
||||
|
||||
it "should match a partial template (simple path)" do
|
||||
get 'action_with_partial'
|
||||
response.should render_template("_a_partial")
|
||||
end
|
||||
|
||||
it "should match a partial template (complex path)" do
|
||||
get 'action_with_partial'
|
||||
response.should render_template("render_spec/_a_partial")
|
||||
end
|
||||
|
||||
it "should fail when the wrong template is rendered" do
|
||||
post 'some_action'
|
||||
lambda do
|
||||
response.should render_template('non_existent_template')
|
||||
end.should fail_with("expected \"non_existent_template\", got \"render_spec/some_action\"")
|
||||
end
|
||||
|
||||
it "should fail without full path when template is associated with a different controller" do
|
||||
post 'action_which_renders_template_from_other_controller'
|
||||
lambda do
|
||||
response.should render_template('action_with_template')
|
||||
end.should fail_with(%Q|expected "action_with_template", got "controller_spec/action_with_template"|)
|
||||
end
|
||||
|
||||
it "should fail with incorrect full path when template is associated with a different controller" do
|
||||
post 'action_which_renders_template_from_other_controller'
|
||||
lambda do
|
||||
response.should render_template('render_spec/action_with_template')
|
||||
end.should fail_with(%Q|expected "render_spec/action_with_template", got "controller_spec/action_with_template"|)
|
||||
end
|
||||
|
||||
it "should fail on the wrong extension (given rhtml)" do
|
||||
get 'some_action'
|
||||
lambda {
|
||||
response.should render_template('render_spec/some_action.rjs')
|
||||
}.should fail_with("expected \"render_spec/some_action.rjs\", got \"render_spec/some_action\"")
|
||||
end
|
||||
|
||||
it "should fail when TEXT is rendered" do
|
||||
post 'text_action'
|
||||
lambda do
|
||||
response.should render_template('some_action')
|
||||
end.should fail_with("expected \"some_action\", got nil")
|
||||
end
|
||||
end
|
||||
|
||||
describe "response.should_not render_template (in #{mode} mode)",
|
||||
:type => :controller do
|
||||
controller_name :render_spec
|
||||
if mode == 'integration'
|
||||
integrate_views
|
||||
end
|
||||
|
||||
it "should pass when the action renders nothing" do
|
||||
post 'action_that_renders_nothing'
|
||||
response.should_not render_template('action_that_renders_nothing')
|
||||
end
|
||||
|
||||
it "should pass when the action renders nothing (symbol)" do
|
||||
post 'action_that_renders_nothing'
|
||||
response.should_not render_template(:action_that_renders_nothing)
|
||||
end
|
||||
|
||||
it "should pass when the action does not render the template" do
|
||||
post 'some_action'
|
||||
response.should_not render_template('some_other_template')
|
||||
end
|
||||
|
||||
it "should pass when the action does not render the template (symbol)" do
|
||||
post 'some_action'
|
||||
response.should_not render_template(:some_other_template)
|
||||
end
|
||||
|
||||
it "should pass when the action does not render the template (named with controller)" do
|
||||
post 'some_action'
|
||||
response.should_not render_template('render_spec/some_other_template')
|
||||
end
|
||||
|
||||
it "should pass when the action renders the template with a different controller" do
|
||||
post 'action_which_renders_template_from_other_controller'
|
||||
response.should_not render_template('action_with_template')
|
||||
end
|
||||
|
||||
it "should pass when the action renders the template (named with controller) with a different controller" do
|
||||
post 'action_which_renders_template_from_other_controller'
|
||||
response.should_not render_template('render_spec/action_with_template')
|
||||
end
|
||||
|
||||
it "should pass when TEXT is rendered" do
|
||||
post 'text_action'
|
||||
response.should_not render_template('some_action')
|
||||
end
|
||||
|
||||
it "should fail when the action renders the template" do
|
||||
post 'some_action'
|
||||
lambda do
|
||||
response.should_not render_template('some_action')
|
||||
end.should fail_with("expected not to render \"some_action\", but did")
|
||||
end
|
||||
|
||||
it "should fail when the action renders the template (symbol)" do
|
||||
post 'some_action'
|
||||
lambda do
|
||||
response.should_not render_template(:some_action)
|
||||
end.should fail_with("expected not to render \"some_action\", but did")
|
||||
end
|
||||
|
||||
it "should fail when the action renders the template (named with controller)" do
|
||||
post 'some_action'
|
||||
lambda do
|
||||
response.should_not render_template('render_spec/some_action')
|
||||
end.should fail_with("expected not to render \"render_spec/some_action\", but did")
|
||||
end
|
||||
|
||||
it "should fail when the action renders the partial" do
|
||||
post 'action_with_partial'
|
||||
lambda do
|
||||
response.should_not render_template('_a_partial')
|
||||
end.should fail_with("expected not to render \"_a_partial\", but did")
|
||||
end
|
||||
|
||||
it "should fail when the action renders the partial (named with controller)" do
|
||||
post 'action_with_partial'
|
||||
lambda do
|
||||
response.should_not render_template('render_spec/_a_partial')
|
||||
end.should fail_with("expected not to render \"render_spec/_a_partial\", but did")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/rspec-rails/spec/rails/mocks/ar_classes.rb
vendored
Normal file
10
vendor/plugins/rspec-rails/spec/rails/mocks/ar_classes.rb
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
class MockableModel < ActiveRecord::Base
|
||||
has_one :associated_model
|
||||
end
|
||||
|
||||
class SubMockableModel < MockableModel
|
||||
end
|
||||
|
||||
class AssociatedModel < ActiveRecord::Base
|
||||
belongs_to :mockable_model
|
||||
end
|
||||
64
vendor/plugins/rspec-rails/spec/rails/mocks/mock_model_spec.rb
vendored
Normal file
64
vendor/plugins/rspec-rails/spec/rails/mocks/mock_model_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require File.dirname(__FILE__) + '/ar_classes'
|
||||
|
||||
describe "mock_model" do
|
||||
before(:each) do
|
||||
@model = mock_model(SubMockableModel)
|
||||
end
|
||||
it "should say it is_a? if it is" do
|
||||
@model.is_a?(SubMockableModel).should be(true)
|
||||
end
|
||||
it "should say it is_a? if it's ancestor is" do
|
||||
@model.is_a?(MockableModel).should be(true)
|
||||
end
|
||||
it "should say it is kind_of? if it is" do
|
||||
@model.kind_of?(SubMockableModel).should be(true)
|
||||
end
|
||||
it "should say it is kind_of? if it's ancestor is" do
|
||||
@model.kind_of?(MockableModel).should be(true)
|
||||
end
|
||||
it "should say it is instance_of? if it is" do
|
||||
@model.instance_of?(SubMockableModel).should be(true)
|
||||
end
|
||||
it "should not say it instance_of? if it isn't, even if it's ancestor is" do
|
||||
@model.instance_of?(MockableModel).should be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe "mock_model with stubbed id", :type => :view do
|
||||
before(:each) do
|
||||
@model = mock_model(MockableModel, :id => 1)
|
||||
end
|
||||
it "should be named using the stubbed id value" do
|
||||
@model.instance_variable_get(:@name).should == "MockableModel_1"
|
||||
end
|
||||
end
|
||||
|
||||
describe "mock_model with null_object", :type => :view do
|
||||
before(:each) do
|
||||
@model = mock_model(MockableModel, :null_object => true, :mocked_method => "mocked")
|
||||
end
|
||||
|
||||
it "should be able to mock methods" do
|
||||
@model.mocked_method.should == "mocked"
|
||||
end
|
||||
it "should return itself to unmocked methods" do
|
||||
@model.unmocked_method.should equal(@model)
|
||||
end
|
||||
end
|
||||
|
||||
describe "mock_model as association", :type => :view do
|
||||
before(:each) do
|
||||
@real = AssociatedModel.create!
|
||||
@mock_model = mock_model(MockableModel)
|
||||
@real.mockable_model = @mock_model
|
||||
end
|
||||
|
||||
it "should pass associated_model == mock" do
|
||||
@mock_model.should == @real.mockable_model
|
||||
end
|
||||
|
||||
it "should pass mock == associated_model" do
|
||||
@real.mockable_model.should == @mock_model
|
||||
end
|
||||
end
|
||||
79
vendor/plugins/rspec-rails/spec/rails/mocks/stub_model_spec.rb
vendored
Normal file
79
vendor/plugins/rspec-rails/spec/rails/mocks/stub_model_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||
require File.dirname(__FILE__) + '/ar_classes'
|
||||
|
||||
describe "stub_model" do
|
||||
describe "defaults" do
|
||||
it "should have an id" do
|
||||
stub_model(MockableModel).id.should be > 0
|
||||
end
|
||||
|
||||
it "should say it is not a new record" do
|
||||
stub_model(MockableModel).should_not be_new_record
|
||||
end
|
||||
end
|
||||
|
||||
it "should accept a stub id" do
|
||||
stub_model(MockableModel, :id => 37).id.should == 37
|
||||
end
|
||||
|
||||
it "should say it is a new record when id is set to nil" do
|
||||
stub_model(MockableModel, :id => nil).should be_new_record
|
||||
end
|
||||
|
||||
it "should accept any arbitrary stub" do
|
||||
stub_model(MockableModel, :foo => "bar").foo.should == "bar"
|
||||
end
|
||||
|
||||
it "should accept a stub for save" do
|
||||
stub_model(MockableModel, :save => false).save.should be(false)
|
||||
end
|
||||
|
||||
describe "#as_new_record" do
|
||||
it "should say it is a new record" do
|
||||
stub_model(MockableModel).as_new_record.should be_new_record
|
||||
end
|
||||
|
||||
it "should have a nil id" do
|
||||
stub_model(MockableModel).as_new_record.id.should be(nil)
|
||||
end
|
||||
end
|
||||
|
||||
it "should raise when hitting the db" do
|
||||
lambda do
|
||||
model = stub_model(MockableModel, :changed => true, :attributes_with_quotes => {'this' => 'that'})
|
||||
model.save
|
||||
end.should raise_error(Spec::Rails::IllegalDataAccessException, /stubbed models are not allowed to access the database/)
|
||||
end
|
||||
|
||||
it "should increment the id" do
|
||||
first = stub_model(MockableModel)
|
||||
second = stub_model(MockableModel)
|
||||
second.id.should == (first.id + 1)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "stub_model as association" do
|
||||
before(:each) do
|
||||
@real = AssociatedModel.create!
|
||||
@stub_model = stub_model(MockableModel)
|
||||
@real.mockable_model = @stub_model
|
||||
end
|
||||
|
||||
it "should pass associated_model == mock" do
|
||||
@stub_model.should == @real.mockable_model
|
||||
end
|
||||
|
||||
it "should pass mock == associated_model" do
|
||||
@real.mockable_model.should == @stub_model
|
||||
end
|
||||
end
|
||||
|
||||
describe "stub_model with a block" do
|
||||
it "should yield the model" do
|
||||
model = stub_model(MockableModel) do |block_arg|
|
||||
@block_arg = block_arg
|
||||
end
|
||||
model.should be(@block_arg)
|
||||
end
|
||||
end
|
||||
8
vendor/plugins/rspec-rails/spec/rails/sample_modified_fixture.rb
vendored
Normal file
8
vendor/plugins/rspec-rails/spec/rails/sample_modified_fixture.rb
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
require File.dirname(__FILE__) + '/../spec_helper'
|
||||
|
||||
describe "A sample spec", :type => :model do
|
||||
fixtures :animals
|
||||
it "should pass" do
|
||||
animals(:pig).name.should == "Piggy"
|
||||
end
|
||||
end
|
||||
8
vendor/plugins/rspec-rails/spec/rails/sample_spec.rb
vendored
Normal file
8
vendor/plugins/rspec-rails/spec/rails/sample_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
require File.dirname(__FILE__) + '/../spec_helper'
|
||||
|
||||
describe "A sample spec", :type => :model do
|
||||
fixtures :animals
|
||||
it "should pass" do
|
||||
animals(:pig).name.should == "Pig"
|
||||
end
|
||||
end
|
||||
96
vendor/plugins/rspec-rails/spec/rails/spec_server_spec.rb
vendored
Normal file
96
vendor/plugins/rspec-rails/spec/rails/spec_server_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
require File.dirname(__FILE__) + '/../spec_helper'
|
||||
|
||||
describe "script/spec_server file", :shared => true do
|
||||
attr_accessor :tmbundle_install_directory
|
||||
attr_reader :animals_yml_path, :original_animals_content
|
||||
|
||||
before do
|
||||
@animals_yml_path = File.expand_path("#{RAILS_ROOT}/spec/fixtures/animals.yml")
|
||||
@original_animals_content = File.read(animals_yml_path)
|
||||
end
|
||||
|
||||
after do
|
||||
File.open(animals_yml_path, "w") do |f|
|
||||
f.write original_animals_content
|
||||
end
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
system "lsof -i tcp:8989 | sed /COMMAND/d | awk '{print $2}' | xargs kill"
|
||||
end
|
||||
|
||||
it "runs a spec" do
|
||||
dir = File.dirname(__FILE__)
|
||||
output = ""
|
||||
Timeout.timeout(10) do
|
||||
loop do
|
||||
output = `#{RAILS_ROOT}/script/spec #{dir}/sample_spec.rb --drb 2>&1`
|
||||
break unless output.include?("No server is running")
|
||||
end
|
||||
end
|
||||
|
||||
if $?.exitstatus != 0 || output !~ /0 failures/
|
||||
flunk "command 'script/spec spec/sample_spec' failed\n#{output}"
|
||||
end
|
||||
|
||||
fixtures = YAML.load(@original_animals_content)
|
||||
fixtures['pig']['name'] = "Piggy"
|
||||
|
||||
File.open(animals_yml_path, "w") do |f|
|
||||
f.write YAML.dump(fixtures)
|
||||
end
|
||||
|
||||
Timeout.timeout(10) do
|
||||
loop do
|
||||
output = `#{RAILS_ROOT}/script/spec #{dir}/sample_modified_fixture.rb --drb 2>&1`
|
||||
break unless output.include?("No server is running")
|
||||
end
|
||||
end
|
||||
|
||||
if $?.exitstatus != 0 || output !~ /0 failures/
|
||||
flunk "command 'script/spec spec/sample_modified_fixture' failed\n#{output}"
|
||||
end
|
||||
end
|
||||
|
||||
def start_spec_server
|
||||
dir = File.dirname(__FILE__)
|
||||
Thread.start do
|
||||
system "cd #{RAILS_ROOT}; script/spec_server"
|
||||
end
|
||||
|
||||
file_content = ""
|
||||
end
|
||||
end
|
||||
|
||||
describe "script/spec_server file without TextMate bundle" do
|
||||
it_should_behave_like "script/spec_server file"
|
||||
before(:each) do
|
||||
start_spec_server
|
||||
end
|
||||
end
|
||||
|
||||
describe "script/spec_server file with TextMate bundle" do
|
||||
it_should_behave_like "script/spec_server file"
|
||||
before(:each) do
|
||||
dir = File.dirname(__FILE__)
|
||||
@tmbundle_install_directory = File.expand_path("#{Dir.tmpdir}/Library/Application Support/TextMate/Bundles")
|
||||
@bundle_name = "RSpec.tmbundle"
|
||||
FileUtils.mkdir_p(tmbundle_install_directory)
|
||||
bundle_dir = File.expand_path("#{dir}/../../../../../../#{@bundle_name}")
|
||||
File.directory?(bundle_dir).should be_true
|
||||
unless system(%Q|ln -s #{bundle_dir} "#{tmbundle_install_directory}"|)
|
||||
raise "Creating link to Textmate Bundle"
|
||||
end
|
||||
start_spec_server
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
bundle_file_to_remove = "#{tmbundle_install_directory}/#{@bundle_name}"
|
||||
if bundle_file_to_remove == "/"
|
||||
raise "bundle file path resolved to '/' - could not call rm"
|
||||
end
|
||||
unless system(%Q|rm "#{bundle_file_to_remove}"|)
|
||||
raise "Removing Textmate bundle link failed"
|
||||
end
|
||||
end
|
||||
end
|
||||
11
vendor/plugins/rspec-rails/spec/rails/spec_spec.rb
vendored
Normal file
11
vendor/plugins/rspec-rails/spec/rails/spec_spec.rb
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
require File.dirname(__FILE__) + '/../spec_helper'
|
||||
|
||||
describe "script/spec file" do
|
||||
it "should run a spec" do
|
||||
dir = File.dirname(__FILE__)
|
||||
output = `#{RAILS_ROOT}/script/spec #{dir}/sample_spec.rb`
|
||||
unless $?.exitstatus == 0
|
||||
flunk "command 'script/spec spec/sample_spec' failed\n#{output}"
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue