shoulda 2.11.3 → 3.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +9 -0
- data/Gemfile.lock +108 -0
- data/README.md +95 -0
- data/Rakefile +6 -50
- data/lib/shoulda/version.rb +1 -1
- metadata +50 -269
- data/README.rdoc +0 -154
- data/bin/convert_to_should_syntax +0 -42
- data/lib/shoulda.rb +0 -9
- data/lib/shoulda/action_controller.rb +0 -34
- data/lib/shoulda/action_controller/macros.rb +0 -221
- data/lib/shoulda/action_controller/matchers.rb +0 -39
- data/lib/shoulda/action_controller/matchers/assign_to_matcher.rb +0 -112
- data/lib/shoulda/action_controller/matchers/filter_param_matcher.rb +0 -74
- data/lib/shoulda/action_controller/matchers/redirect_to_matcher.rb +0 -62
- data/lib/shoulda/action_controller/matchers/render_template_matcher.rb +0 -54
- data/lib/shoulda/action_controller/matchers/render_with_layout_matcher.rb +0 -99
- data/lib/shoulda/action_controller/matchers/respond_with_content_type_matcher.rb +0 -74
- data/lib/shoulda/action_controller/matchers/respond_with_matcher.rb +0 -85
- data/lib/shoulda/action_controller/matchers/route_matcher.rb +0 -93
- data/lib/shoulda/action_controller/matchers/set_session_matcher.rb +0 -98
- data/lib/shoulda/action_controller/matchers/set_the_flash_matcher.rb +0 -100
- data/lib/shoulda/action_mailer.rb +0 -13
- data/lib/shoulda/action_mailer/assertions.rb +0 -42
- data/lib/shoulda/action_mailer/matchers.rb +0 -22
- data/lib/shoulda/action_mailer/matchers/have_sent_email.rb +0 -110
- data/lib/shoulda/active_record.rb +0 -16
- data/lib/shoulda/active_record/assertions.rb +0 -69
- data/lib/shoulda/active_record/helpers.rb +0 -32
- data/lib/shoulda/active_record/macros.rb +0 -457
- data/lib/shoulda/active_record/matchers.rb +0 -42
- data/lib/shoulda/active_record/matchers/allow_mass_assignment_of_matcher.rb +0 -83
- data/lib/shoulda/active_record/matchers/allow_value_matcher.rb +0 -110
- data/lib/shoulda/active_record/matchers/association_matcher.rb +0 -226
- data/lib/shoulda/active_record/matchers/ensure_inclusion_of_matcher.rb +0 -87
- data/lib/shoulda/active_record/matchers/ensure_length_of_matcher.rb +0 -141
- data/lib/shoulda/active_record/matchers/have_db_column_matcher.rb +0 -169
- data/lib/shoulda/active_record/matchers/have_db_index_matcher.rb +0 -112
- data/lib/shoulda/active_record/matchers/have_readonly_attribute_matcher.rb +0 -59
- data/lib/shoulda/active_record/matchers/validate_acceptance_of_matcher.rb +0 -41
- data/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb +0 -65
- data/lib/shoulda/active_record/matchers/validate_numericality_of_matcher.rb +0 -39
- data/lib/shoulda/active_record/matchers/validate_presence_of_matcher.rb +0 -60
- data/lib/shoulda/active_record/matchers/validate_uniqueness_of_matcher.rb +0 -148
- data/lib/shoulda/active_record/matchers/validation_matcher.rb +0 -56
- data/lib/shoulda/assertions.rb +0 -79
- data/lib/shoulda/autoload_macros.rb +0 -46
- data/lib/shoulda/context.rb +0 -433
- data/lib/shoulda/helpers.rb +0 -8
- data/lib/shoulda/integrations/rspec.rb +0 -13
- data/lib/shoulda/integrations/rspec2.rb +0 -22
- data/lib/shoulda/integrations/test_unit.rb +0 -22
- data/lib/shoulda/macros.rb +0 -161
- data/lib/shoulda/private_helpers.rb +0 -13
- data/lib/shoulda/proc_extensions.rb +0 -14
- data/lib/shoulda/rails.rb +0 -8
- data/lib/shoulda/tasks.rb +0 -3
- data/lib/shoulda/tasks/list_tests.rake +0 -29
- data/lib/shoulda/tasks/yaml_to_shoulda.rake +0 -28
- data/rails/init.rb +0 -8
- data/test/README +0 -36
- data/test/fail_macros.rb +0 -55
- data/test/fixtures/addresses.yml +0 -3
- data/test/fixtures/friendships.yml +0 -0
- data/test/fixtures/posts.yml +0 -5
- data/test/fixtures/products.yml +0 -0
- data/test/fixtures/taggings.yml +0 -0
- data/test/fixtures/tags.yml +0 -9
- data/test/fixtures/users.yml +0 -6
- data/test/functional/posts_controller_test.rb +0 -121
- data/test/functional/users_controller_test.rb +0 -19
- data/test/matchers/action_mailer/have_sent_email_test.rb +0 -70
- data/test/matchers/active_record/allow_mass_assignment_of_matcher_test.rb +0 -74
- data/test/matchers/active_record/allow_value_matcher_test.rb +0 -64
- data/test/matchers/active_record/association_matcher_test.rb +0 -263
- data/test/matchers/active_record/ensure_inclusion_of_matcher_test.rb +0 -81
- data/test/matchers/active_record/ensure_length_of_matcher_test.rb +0 -158
- data/test/matchers/active_record/have_db_column_matcher_test.rb +0 -169
- data/test/matchers/active_record/have_db_index_matcher_test.rb +0 -91
- data/test/matchers/active_record/have_readonly_attributes_matcher_test.rb +0 -29
- data/test/matchers/active_record/validate_acceptance_of_matcher_test.rb +0 -44
- data/test/matchers/active_record/validate_format_of_matcher_test.rb +0 -39
- data/test/matchers/active_record/validate_numericality_of_matcher_test.rb +0 -52
- data/test/matchers/active_record/validate_presence_of_matcher_test.rb +0 -86
- data/test/matchers/active_record/validate_uniqueness_of_matcher_test.rb +0 -147
- data/test/matchers/controller/assign_to_matcher_test.rb +0 -45
- data/test/matchers/controller/filter_param_matcher_test.rb +0 -40
- data/test/matchers/controller/redirect_to_matcher_test.rb +0 -37
- data/test/matchers/controller/render_template_matcher_test.rb +0 -37
- data/test/matchers/controller/render_with_layout_matcher_test.rb +0 -47
- data/test/matchers/controller/respond_with_content_type_matcher_test.rb +0 -32
- data/test/matchers/controller/respond_with_matcher_test.rb +0 -96
- data/test/matchers/controller/route_matcher_test.rb +0 -75
- data/test/matchers/controller/set_session_matcher_test.rb +0 -48
- data/test/matchers/controller/set_the_flash_matcher.rb +0 -95
- data/test/other/autoload_macro_test.rb +0 -18
- data/test/other/context_test.rb +0 -372
- data/test/other/convert_to_should_syntax_test.rb +0 -63
- data/test/other/helpers_test.rb +0 -317
- data/test/other/private_helpers_test.rb +0 -32
- data/test/other/should_test.rb +0 -271
- data/test/rails2_model_builder.rb +0 -130
- data/test/rails2_root/app/controllers/application_controller.rb +0 -22
- data/test/rails2_root/app/controllers/posts_controller.rb +0 -87
- data/test/rails2_root/app/controllers/users_controller.rb +0 -84
- data/test/rails2_root/app/helpers/application_helper.rb +0 -3
- data/test/rails2_root/app/helpers/posts_helper.rb +0 -2
- data/test/rails2_root/app/helpers/users_helper.rb +0 -2
- data/test/rails2_root/app/models/address.rb +0 -7
- data/test/rails2_root/app/models/flea.rb +0 -11
- data/test/rails2_root/app/models/friendship.rb +0 -4
- data/test/rails2_root/app/models/notifier.rb +0 -8
- data/test/rails2_root/app/models/pets/cat.rb +0 -7
- data/test/rails2_root/app/models/pets/dog.rb +0 -10
- data/test/rails2_root/app/models/post.rb +0 -12
- data/test/rails2_root/app/models/product.rb +0 -12
- data/test/rails2_root/app/models/profile.rb +0 -2
- data/test/rails2_root/app/models/registration.rb +0 -2
- data/test/rails2_root/app/models/tag.rb +0 -8
- data/test/rails2_root/app/models/tagging.rb +0 -4
- data/test/rails2_root/app/models/treat.rb +0 -3
- data/test/rails2_root/app/models/user.rb +0 -32
- data/test/rails2_root/app/views/layouts/posts.rhtml +0 -19
- data/test/rails2_root/app/views/layouts/users.rhtml +0 -17
- data/test/rails2_root/app/views/layouts/wide.html.erb +0 -1
- data/test/rails2_root/app/views/notifier/the_email.html.erb +0 -1
- data/test/rails2_root/app/views/posts/edit.rhtml +0 -27
- data/test/rails2_root/app/views/posts/index.rhtml +0 -25
- data/test/rails2_root/app/views/posts/new.rhtml +0 -26
- data/test/rails2_root/app/views/posts/show.rhtml +0 -18
- data/test/rails2_root/app/views/users/edit.rhtml +0 -22
- data/test/rails2_root/app/views/users/index.rhtml +0 -22
- data/test/rails2_root/app/views/users/new.rhtml +0 -21
- data/test/rails2_root/app/views/users/show.rhtml +0 -13
- data/test/rails2_root/config/boot.rb +0 -110
- data/test/rails2_root/config/database.yml +0 -4
- data/test/rails2_root/config/environment.rb +0 -17
- data/test/rails2_root/config/environments/test.rb +0 -23
- data/test/rails2_root/config/initializers/new_rails_defaults.rb +0 -15
- data/test/rails2_root/config/initializers/shoulda.rb +0 -8
- data/test/rails2_root/config/routes.rb +0 -6
- data/test/rails2_root/db/migrate/001_create_users.rb +0 -19
- data/test/rails2_root/db/migrate/002_create_posts.rb +0 -13
- data/test/rails2_root/db/migrate/003_create_taggings.rb +0 -12
- data/test/rails2_root/db/migrate/004_create_tags.rb +0 -11
- data/test/rails2_root/db/migrate/005_create_dogs.rb +0 -12
- data/test/rails2_root/db/migrate/006_create_addresses.rb +0 -14
- data/test/rails2_root/db/migrate/007_create_fleas.rb +0 -11
- data/test/rails2_root/db/migrate/008_create_dogs_fleas.rb +0 -12
- data/test/rails2_root/db/migrate/009_create_products.rb +0 -17
- data/test/rails2_root/db/migrate/010_create_friendships.rb +0 -14
- data/test/rails2_root/db/migrate/011_create_treats.rb +0 -12
- data/test/rails2_root/db/migrate/20090506203502_create_profiles.rb +0 -12
- data/test/rails2_root/db/migrate/20090506203536_create_registrations.rb +0 -14
- data/test/rails2_root/db/migrate/20090513104502_create_cats.rb +0 -12
- data/test/rails2_root/db/schema.rb +0 -0
- data/test/rails2_root/log/test.log +0 -50381
- data/test/rails2_root/public/404.html +0 -30
- data/test/rails2_root/public/422.html +0 -30
- data/test/rails2_root/public/500.html +0 -30
- data/test/rails2_root/script/console +0 -3
- data/test/rails2_root/script/generate +0 -3
- data/test/rails2_root/test/shoulda_macros/custom_macro.rb +0 -6
- data/test/rails2_root/vendor/gems/gem_with_macro-0.0.1/shoulda_macros/gem_macro.rb +0 -6
- data/test/rails2_root/vendor/plugins/plugin_with_macro/shoulda_macros/plugin_macro.rb +0 -6
- data/test/rails2_test_helper.rb +0 -6
- data/test/rails3_model_builder.rb +0 -118
- data/test/rails3_root/Gemfile +0 -28
- data/test/rails3_root/README +0 -244
- data/test/rails3_root/Rakefile +0 -10
- data/test/rails3_root/app/controllers/application_controller.rb +0 -22
- data/test/rails3_root/app/controllers/posts_controller.rb +0 -87
- data/test/rails3_root/app/controllers/users_controller.rb +0 -82
- data/test/rails3_root/app/helpers/application_helper.rb +0 -2
- data/test/rails3_root/app/models/address.rb +0 -7
- data/test/rails3_root/app/models/flea.rb +0 -11
- data/test/rails3_root/app/models/friendship.rb +0 -4
- data/test/rails3_root/app/models/notifier.rb +0 -8
- data/test/rails3_root/app/models/pets/cat.rb +0 -7
- data/test/rails3_root/app/models/pets/dog.rb +0 -10
- data/test/rails3_root/app/models/post.rb +0 -12
- data/test/rails3_root/app/models/product.rb +0 -12
- data/test/rails3_root/app/models/profile.rb +0 -2
- data/test/rails3_root/app/models/registration.rb +0 -2
- data/test/rails3_root/app/models/tag.rb +0 -8
- data/test/rails3_root/app/models/tagging.rb +0 -4
- data/test/rails3_root/app/models/treat.rb +0 -3
- data/test/rails3_root/app/models/user.rb +0 -32
- data/test/rails3_root/app/views/layouts/application.html.erb +0 -14
- data/test/rails3_root/app/views/layouts/posts.rhtml +0 -19
- data/test/rails3_root/app/views/layouts/users.rhtml +0 -17
- data/test/rails3_root/app/views/layouts/wide.html.erb +0 -1
- data/test/rails3_root/app/views/notifier/the_email.html.erb +0 -1
- data/test/rails3_root/app/views/posts/edit.rhtml +0 -27
- data/test/rails3_root/app/views/posts/index.rhtml +0 -25
- data/test/rails3_root/app/views/posts/new.rhtml +0 -24
- data/test/rails3_root/app/views/posts/show.rhtml +0 -18
- data/test/rails3_root/app/views/users/edit.rhtml +0 -22
- data/test/rails3_root/app/views/users/index.rhtml +0 -22
- data/test/rails3_root/app/views/users/new.rhtml +0 -21
- data/test/rails3_root/app/views/users/show.rhtml +0 -13
- data/test/rails3_root/config.ru +0 -4
- data/test/rails3_root/config/application.rb +0 -46
- data/test/rails3_root/config/boot.rb +0 -6
- data/test/rails3_root/config/database.yml +0 -22
- data/test/rails3_root/config/environment.rb +0 -5
- data/test/rails3_root/config/environments/development.rb +0 -19
- data/test/rails3_root/config/environments/production.rb +0 -42
- data/test/rails3_root/config/environments/test.rb +0 -32
- data/test/rails3_root/config/initializers/backtrace_silencers.rb +0 -7
- data/test/rails3_root/config/initializers/inflections.rb +0 -10
- data/test/rails3_root/config/initializers/mime_types.rb +0 -5
- data/test/rails3_root/config/initializers/secret_token.rb +0 -7
- data/test/rails3_root/config/initializers/session_store.rb +0 -8
- data/test/rails3_root/config/locales/en.yml +0 -5
- data/test/rails3_root/config/routes.rb +0 -4
- data/test/rails3_root/db/migrate/001_create_users.rb +0 -19
- data/test/rails3_root/db/migrate/002_create_posts.rb +0 -13
- data/test/rails3_root/db/migrate/003_create_taggings.rb +0 -12
- data/test/rails3_root/db/migrate/004_create_tags.rb +0 -11
- data/test/rails3_root/db/migrate/005_create_dogs.rb +0 -12
- data/test/rails3_root/db/migrate/006_create_addresses.rb +0 -14
- data/test/rails3_root/db/migrate/007_create_fleas.rb +0 -11
- data/test/rails3_root/db/migrate/008_create_dogs_fleas.rb +0 -12
- data/test/rails3_root/db/migrate/009_create_products.rb +0 -17
- data/test/rails3_root/db/migrate/010_create_friendships.rb +0 -14
- data/test/rails3_root/db/migrate/011_create_treats.rb +0 -12
- data/test/rails3_root/db/migrate/20090506203502_create_profiles.rb +0 -12
- data/test/rails3_root/db/migrate/20090506203536_create_registrations.rb +0 -14
- data/test/rails3_root/db/migrate/20090513104502_create_cats.rb +0 -12
- data/test/rails3_root/db/seeds.rb +0 -7
- data/test/rails3_root/db/test.sqlite3 +0 -0
- data/test/rails3_root/log/test.log +0 -10834
- data/test/rails3_root/public/404.html +0 -26
- data/test/rails3_root/public/422.html +0 -26
- data/test/rails3_root/public/500.html +0 -26
- data/test/rails3_root/public/favicon.ico +0 -0
- data/test/rails3_root/public/images/rails.png +0 -0
- data/test/rails3_root/public/index.html +0 -279
- data/test/rails3_root/public/javascripts/application.js +0 -2
- data/test/rails3_root/public/javascripts/controls.js +0 -965
- data/test/rails3_root/public/javascripts/dragdrop.js +0 -974
- data/test/rails3_root/public/javascripts/effects.js +0 -1123
- data/test/rails3_root/public/javascripts/prototype.js +0 -4874
- data/test/rails3_root/public/javascripts/rails.js +0 -118
- data/test/rails3_root/public/robots.txt +0 -5
- data/test/rails3_root/script/rails +0 -9
- data/test/rails3_root/test/performance/browsing_test.rb +0 -9
- data/test/rails3_root/test/test_helper.rb +0 -13
- data/test/rails3_test_helper.rb +0 -6
- data/test/rspec_test.rb +0 -207
- data/test/test_helper.rb +0 -36
- data/test/unit/address_test.rb +0 -10
- data/test/unit/cat_test.rb +0 -7
- data/test/unit/dog_test.rb +0 -9
- data/test/unit/flea_test.rb +0 -14
- data/test/unit/friendship_test.rb +0 -6
- data/test/unit/post_test.rb +0 -15
- data/test/unit/product_test.rb +0 -23
- data/test/unit/tag_test.rb +0 -11
- data/test/unit/tagging_test.rb +0 -6
- data/test/unit/user_test.rb +0 -46
@@ -1,85 +0,0 @@
|
|
1
|
-
module Shoulda # :nodoc:
|
2
|
-
module ActionController # :nodoc:
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
# Ensures a controller responded with expected 'response' status code.
|
6
|
-
#
|
7
|
-
# You can pass an explicit status number like 200, 301, 404, 500
|
8
|
-
# or its symbolic equivalent :success, :redirect, :missing, :error.
|
9
|
-
# See ActionController::StatusCodes for a full list.
|
10
|
-
#
|
11
|
-
# Example:
|
12
|
-
#
|
13
|
-
# it { should respond_with(:success) }
|
14
|
-
# it { should respond_with(:redirect) }
|
15
|
-
# it { should respond_with(:missing) }
|
16
|
-
# it { should respond_with(:error) }
|
17
|
-
# it { should respond_with(501) }
|
18
|
-
def respond_with(status)
|
19
|
-
RespondWithMatcher.new(status)
|
20
|
-
end
|
21
|
-
|
22
|
-
class RespondWithMatcher # :nodoc:
|
23
|
-
|
24
|
-
def initialize(status)
|
25
|
-
@status = symbol_to_status_code(status)
|
26
|
-
end
|
27
|
-
|
28
|
-
def matches?(controller)
|
29
|
-
@controller = controller
|
30
|
-
correct_status_code? || correct_status_code_range?
|
31
|
-
end
|
32
|
-
|
33
|
-
def failure_message
|
34
|
-
"Expected #{expectation}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def negative_failure_message
|
38
|
-
"Did not expect #{expectation}"
|
39
|
-
end
|
40
|
-
|
41
|
-
def description
|
42
|
-
"respond with #{@status}"
|
43
|
-
end
|
44
|
-
|
45
|
-
protected
|
46
|
-
|
47
|
-
def correct_status_code?
|
48
|
-
response_code == @status
|
49
|
-
end
|
50
|
-
|
51
|
-
def correct_status_code_range?
|
52
|
-
@status.is_a?(Range) &&
|
53
|
-
@status.include?(response_code)
|
54
|
-
end
|
55
|
-
|
56
|
-
def response_code
|
57
|
-
@controller.response.response_code
|
58
|
-
end
|
59
|
-
|
60
|
-
def symbol_to_status_code(potential_symbol)
|
61
|
-
case potential_symbol
|
62
|
-
when :success then 200
|
63
|
-
when :redirect then 300..399
|
64
|
-
when :missing then 404
|
65
|
-
when :error then 500..599
|
66
|
-
when Symbol
|
67
|
-
if defined?(::Rack::Utils::SYMBOL_TO_STATUS_CODE)
|
68
|
-
::Rack::Utils::SYMBOL_TO_STATUS_CODE[potential_symbol]
|
69
|
-
else
|
70
|
-
::ActionController::Base::SYMBOL_TO_STATUS_CODE[potential_symbol]
|
71
|
-
end
|
72
|
-
else
|
73
|
-
potential_symbol
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def expectation
|
78
|
-
"response to be a #{@status}, but was #{response_code}"
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
module Shoulda # :nodoc:
|
2
|
-
module ActionController # :nodoc:
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
# Ensures that requesting +path+ using +method+ routes to +options+.
|
6
|
-
#
|
7
|
-
# If you don't specify a controller, it will use the controller from the
|
8
|
-
# example group.
|
9
|
-
#
|
10
|
-
# +to_param+ is called on the +options+ given.
|
11
|
-
#
|
12
|
-
# Examples:
|
13
|
-
#
|
14
|
-
# it { should route(:get, "/posts").
|
15
|
-
# to(:controller => :posts, :action => :index) }
|
16
|
-
# it { should route(:get, "/posts/new").to(:action => :new) }
|
17
|
-
# it { should route(:post, "/posts").to(:action => :create) }
|
18
|
-
# it { should route(:get, "/posts/1").to(:action => :show, :id => 1) }
|
19
|
-
# it { should route(:edit, "/posts/1").to(:action => :show, :id => 1) }
|
20
|
-
# it { should route(:put, "/posts/1").to(:action => :update, :id => 1) }
|
21
|
-
# it { should route(:delete, "/posts/1").
|
22
|
-
# to(:action => :destroy, :id => 1) }
|
23
|
-
# it { should route(:get, "/users/1/posts/1").
|
24
|
-
# to(:action => :show, :id => 1, :user_id => 1) }
|
25
|
-
def route(method, path)
|
26
|
-
RouteMatcher.new(method, path, self)
|
27
|
-
end
|
28
|
-
|
29
|
-
class RouteMatcher # :nodoc:
|
30
|
-
|
31
|
-
def initialize(method, path, context)
|
32
|
-
@method = method
|
33
|
-
@path = path
|
34
|
-
@context = context
|
35
|
-
end
|
36
|
-
|
37
|
-
def to(params)
|
38
|
-
@params = params
|
39
|
-
stringify_params!
|
40
|
-
self
|
41
|
-
end
|
42
|
-
|
43
|
-
def in_context(context)
|
44
|
-
@context = context
|
45
|
-
self
|
46
|
-
end
|
47
|
-
|
48
|
-
def matches?(controller)
|
49
|
-
@controller = controller
|
50
|
-
guess_controller!
|
51
|
-
route_recognized?
|
52
|
-
end
|
53
|
-
|
54
|
-
attr_reader :failure_message, :negative_failure_message
|
55
|
-
|
56
|
-
def description
|
57
|
-
"route #{@method.to_s.upcase} #{@path} to/from #{@params.inspect}"
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def guess_controller!
|
63
|
-
@params[:controller] ||= @controller.controller_path
|
64
|
-
end
|
65
|
-
|
66
|
-
def stringify_params!
|
67
|
-
@params.each do |key, value|
|
68
|
-
@params[key] = value.is_a?(Array) ? value.collect {|v| v.to_param } : value.to_param
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def route_recognized?
|
73
|
-
begin
|
74
|
-
@context.send(:assert_routing,
|
75
|
-
{ :method => @method, :path => @path },
|
76
|
-
@params)
|
77
|
-
|
78
|
-
@negative_failure_message = "Didn't expect to #{description}"
|
79
|
-
true
|
80
|
-
rescue ::ActionController::RoutingError => error
|
81
|
-
@failure_message = error.message
|
82
|
-
false
|
83
|
-
rescue Test::Unit::AssertionFailedError => error
|
84
|
-
@failure_message = error.message
|
85
|
-
false
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
@@ -1,98 +0,0 @@
|
|
1
|
-
module Shoulda # :nodoc:
|
2
|
-
module ActionController # :nodoc:
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
# Ensures that a session key was set to the expected value.
|
6
|
-
#
|
7
|
-
# Example:
|
8
|
-
#
|
9
|
-
# it { should set_session(:message) }
|
10
|
-
# it { should set_session(:user_id).to(@user.id) }
|
11
|
-
# it { should_not set_session(:user_id) }
|
12
|
-
def set_session(key)
|
13
|
-
SetSessionMatcher.new(key)
|
14
|
-
end
|
15
|
-
|
16
|
-
class SetSessionMatcher # :nodoc:
|
17
|
-
|
18
|
-
def initialize(key)
|
19
|
-
@key = key.to_s
|
20
|
-
end
|
21
|
-
|
22
|
-
def to(value = nil, &block)
|
23
|
-
@value = value
|
24
|
-
@value_block = block
|
25
|
-
self
|
26
|
-
end
|
27
|
-
|
28
|
-
def matches?(controller)
|
29
|
-
@controller = controller
|
30
|
-
@value = @context.instance_eval(&@value_block) if @value_block
|
31
|
-
(assigned_value? && assigned_correct_value?) || cleared_value?
|
32
|
-
end
|
33
|
-
|
34
|
-
def failure_message
|
35
|
-
"Expected #{expectation}, but #{result}"
|
36
|
-
end
|
37
|
-
|
38
|
-
def negative_failure_message
|
39
|
-
"Didn't expect #{expectation}, but #{result}"
|
40
|
-
end
|
41
|
-
|
42
|
-
def description
|
43
|
-
description = "set session variable #{@key.inspect}"
|
44
|
-
description << " to #{@value.inspect}" if defined?(@value)
|
45
|
-
description
|
46
|
-
end
|
47
|
-
|
48
|
-
def in_context(context)
|
49
|
-
@context = context
|
50
|
-
self
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def assigned_value?
|
56
|
-
!assigned_value.nil?
|
57
|
-
end
|
58
|
-
|
59
|
-
def cleared_value?
|
60
|
-
defined?(@value) && @value.nil? && assigned_value.nil?
|
61
|
-
end
|
62
|
-
|
63
|
-
def assigned_correct_value?
|
64
|
-
return true if @value.nil?
|
65
|
-
assigned_value == @value
|
66
|
-
end
|
67
|
-
|
68
|
-
def assigned_value
|
69
|
-
session[@key]
|
70
|
-
end
|
71
|
-
|
72
|
-
def session
|
73
|
-
if @controller.request.respond_to?(:session)
|
74
|
-
@controller.request.session.to_hash
|
75
|
-
else
|
76
|
-
@controller.response.session.data
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def expectation
|
81
|
-
expectation = "session variable #{@key} to be set"
|
82
|
-
expectation << " to #{@value.inspect}" if @value
|
83
|
-
expectation
|
84
|
-
end
|
85
|
-
|
86
|
-
def result
|
87
|
-
if session.empty?
|
88
|
-
"no session variables were set"
|
89
|
-
else
|
90
|
-
"the session was #{session.inspect}"
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
module Shoulda # :nodoc:
|
2
|
-
module ActionController # :nodoc:
|
3
|
-
module Matchers
|
4
|
-
|
5
|
-
# Ensures that the flash contains the given value. Can be a String, a
|
6
|
-
# Regexp, or nil (indicating that the flash should not be set).
|
7
|
-
#
|
8
|
-
# Example:
|
9
|
-
#
|
10
|
-
# it { should set_the_flash }
|
11
|
-
# it { should set_the_flash.to("Thank you for placing this order.") }
|
12
|
-
# it { should set_the_flash.to(/created/i) }
|
13
|
-
# it { should set_the_flash.to(/logged in/i).now }
|
14
|
-
# it { should_not set_the_flash }
|
15
|
-
def set_the_flash
|
16
|
-
SetTheFlashMatcher.new
|
17
|
-
end
|
18
|
-
|
19
|
-
class SetTheFlashMatcher # :nodoc:
|
20
|
-
|
21
|
-
def to(value)
|
22
|
-
@value = value
|
23
|
-
self
|
24
|
-
end
|
25
|
-
|
26
|
-
def now
|
27
|
-
@now = true
|
28
|
-
self
|
29
|
-
end
|
30
|
-
|
31
|
-
def matches?(controller)
|
32
|
-
@controller = controller
|
33
|
-
sets_the_flash? && string_value_matches? && regexp_value_matches?
|
34
|
-
end
|
35
|
-
|
36
|
-
attr_reader :failure_message, :negative_failure_message
|
37
|
-
|
38
|
-
def description
|
39
|
-
description = "set the flash"
|
40
|
-
description << " to #{@value.inspect}" unless @value.nil?
|
41
|
-
description
|
42
|
-
end
|
43
|
-
|
44
|
-
def failure_message
|
45
|
-
"Expected #{expectation}"
|
46
|
-
end
|
47
|
-
|
48
|
-
def negative_failure_message
|
49
|
-
"Did not expect #{expectation}"
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def sets_the_flash?
|
55
|
-
!flash.blank?
|
56
|
-
end
|
57
|
-
|
58
|
-
def string_value_matches?
|
59
|
-
return true unless String === @value
|
60
|
-
flash.values.any? {|value| value == @value }
|
61
|
-
end
|
62
|
-
|
63
|
-
def regexp_value_matches?
|
64
|
-
return true unless Regexp === @value
|
65
|
-
flash.values.any? {|value| value =~ @value }
|
66
|
-
end
|
67
|
-
|
68
|
-
def flash
|
69
|
-
return @flash if @flash
|
70
|
-
flash_and_now = @controller.request.session["flash"].dup if @controller.request.session["flash"]
|
71
|
-
flash = @controller.send(:flash)
|
72
|
-
|
73
|
-
@flash = if @now
|
74
|
-
flash.keys.each {|key| flash_and_now.delete(key) }
|
75
|
-
flash_and_now
|
76
|
-
else
|
77
|
-
flash
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def expectation
|
82
|
-
expectation = "the flash#{".now" if @now} to be set"
|
83
|
-
expectation << " to #{@value.inspect}" unless @value.nil?
|
84
|
-
expectation << ", but #{flash_description}"
|
85
|
-
expectation
|
86
|
-
end
|
87
|
-
|
88
|
-
def flash_description
|
89
|
-
if flash.blank?
|
90
|
-
"no flash was set"
|
91
|
-
else
|
92
|
-
"was #{flash.inspect}"
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'shoulda'
|
2
|
-
require 'shoulda/action_mailer/assertions'
|
3
|
-
require 'shoulda/action_mailer/matchers'
|
4
|
-
|
5
|
-
module Test # :nodoc: all
|
6
|
-
module Unit
|
7
|
-
class TestCase
|
8
|
-
include Shoulda::ActionMailer::Assertions
|
9
|
-
include Shoulda::ActionMailer::Matchers
|
10
|
-
extend Shoulda::ActionMailer::Matchers
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Shoulda # :nodoc:
|
2
|
-
module ActionMailer # :nodoc:
|
3
|
-
module Assertions
|
4
|
-
# Asserts that an email was delivered. Can take a block that can further
|
5
|
-
# narrow down the types of emails you're expecting.
|
6
|
-
#
|
7
|
-
# assert_sent_email
|
8
|
-
#
|
9
|
-
# Passes if ActionMailer::Base.deliveries has an email
|
10
|
-
#
|
11
|
-
# assert_sent_email do |email|
|
12
|
-
# email.subject =~ /hi there/ && email.to.include?('none@none.com')
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
# Passes if there is an email with subject containing 'hi there' and
|
16
|
-
# 'none@none.com' as one of the recipients.
|
17
|
-
#
|
18
|
-
def assert_sent_email
|
19
|
-
::ActiveSupport::Deprecation.warn("use: should have_sent_email")
|
20
|
-
emails = ::ActionMailer::Base.deliveries
|
21
|
-
assert !emails.empty?, "No emails were sent"
|
22
|
-
if block_given?
|
23
|
-
matching_emails = emails.select {|email| yield email }
|
24
|
-
assert !matching_emails.empty?, "None of the emails matched."
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# should have_sent_email.with_subject(/hi there/).to('none@none.com').from('noreply@example.com').with_body(/reach out/)
|
29
|
-
|
30
|
-
# Asserts that no ActionMailer mails were delivered
|
31
|
-
#
|
32
|
-
# assert_did_not_send_email
|
33
|
-
def assert_did_not_send_email
|
34
|
-
::ActiveSupport::Deprecation.warn("use: should_not have_sent_email")
|
35
|
-
msg = "Sent #{::ActionMailer::Base.deliveries.size} emails.\n"
|
36
|
-
::ActionMailer::Base.deliveries.each { |m| msg << " '#{m.subject}' sent to #{m.to.to_sentence}\n" }
|
37
|
-
assert ::ActionMailer::Base.deliveries.empty?, msg
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'shoulda/action_mailer/matchers/have_sent_email'
|
2
|
-
|
3
|
-
module Shoulda # :nodoc:
|
4
|
-
module ActionMailer # :nodoc:
|
5
|
-
# = Matchers for your mailers
|
6
|
-
#
|
7
|
-
# This matcher will test that email is sent properly
|
8
|
-
#
|
9
|
-
# describe User do
|
10
|
-
# it { should have_sent_email.with_subject(/is spam$/) }
|
11
|
-
# it { should have_sent_email.from('do-not-reply@example.com') }
|
12
|
-
# it { should have_sent_email.with_body(/is spam\./) }
|
13
|
-
# it { should have_sent_email.to('myself@me.com') }
|
14
|
-
# it { should have_sent_email.with_subject(/spam/).
|
15
|
-
# from('do-not-reply@example.com').
|
16
|
-
# with_body(/spam/).
|
17
|
-
# to('myself@me.com') }
|
18
|
-
# end
|
19
|
-
module Matchers
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|