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,29 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class HaveReadonlyAttributesMatcherTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
context "an attribute that cannot be set after being saved" do
|
6
|
-
setup do
|
7
|
-
define_model :example, :attr => :string do
|
8
|
-
attr_readonly :attr
|
9
|
-
end
|
10
|
-
@model = Example.new
|
11
|
-
end
|
12
|
-
|
13
|
-
should "accept being read-only" do
|
14
|
-
assert_accepts have_readonly_attribute(:attr), @model
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context "an attribute that can be set after being saved" do
|
19
|
-
setup do
|
20
|
-
define_model :example, :attr => :string
|
21
|
-
@model = Example.new
|
22
|
-
end
|
23
|
-
|
24
|
-
should "accept being read-only" do
|
25
|
-
assert_rejects have_readonly_attribute(:attr), @model
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ValidateAcceptanceOfMatcherTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
context "an attribute which must be accepted" do
|
6
|
-
setup do
|
7
|
-
@model = define_model(:example) do
|
8
|
-
validates_acceptance_of :attr
|
9
|
-
end.new
|
10
|
-
end
|
11
|
-
|
12
|
-
should "require that attribute to be accepted" do
|
13
|
-
assert_accepts validate_acceptance_of(:attr), @model
|
14
|
-
end
|
15
|
-
|
16
|
-
should "not overwrite the default message with nil" do
|
17
|
-
assert_accepts validate_acceptance_of(:attr).with_message(nil), @model
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
context "an attribute that does not need to be accepted" do
|
22
|
-
setup do
|
23
|
-
@model = define_model(:example, :attr => :string).new
|
24
|
-
end
|
25
|
-
|
26
|
-
should "not require that attribute to be accepted" do
|
27
|
-
assert_rejects validate_acceptance_of(:attr), @model
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "an attribute which must be accepted with a custom message" do
|
32
|
-
setup do
|
33
|
-
@model = define_model(:example) do
|
34
|
-
validates_acceptance_of :attr, :message => 'custom'
|
35
|
-
end.new
|
36
|
-
end
|
37
|
-
|
38
|
-
should "require that attribute to be accepted with that message" do
|
39
|
-
assert_accepts validate_acceptance_of(:attr).with_message(/custom/),
|
40
|
-
@model
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ValidateFormatOfMatcherTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
|
6
|
-
context "a postal code" do
|
7
|
-
setup do
|
8
|
-
define_model :example, :attr => :string do
|
9
|
-
validates_format_of :attr, :with => /^\d{5}$/
|
10
|
-
end
|
11
|
-
@model = Example.new
|
12
|
-
end
|
13
|
-
|
14
|
-
should "be valid" do
|
15
|
-
assert_accepts validate_format_of(:attr).with('12345'), @model
|
16
|
-
end
|
17
|
-
|
18
|
-
should "not be valid with alpha in zip" do
|
19
|
-
assert_rejects validate_format_of(:attr).not_with('1234a'), @model, :message=>"is invalid"
|
20
|
-
end
|
21
|
-
|
22
|
-
should "not be valid with to few digits" do
|
23
|
-
assert_rejects validate_format_of(:attr).not_with('1234'), @model, :message=>"is invalid"
|
24
|
-
end
|
25
|
-
|
26
|
-
should "not be valid with to many digits" do
|
27
|
-
assert_rejects validate_format_of(:attr).not_with('123456'), @model, :message=>"is invalid"
|
28
|
-
end
|
29
|
-
|
30
|
-
should "raise error if you try to call both with and not_with" do
|
31
|
-
assert_raise RuntimeError do
|
32
|
-
validate_format_of(:attr).not_with('123456').with('12345')
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ValidateNumericalityOfMatcherTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
context "a numeric attribute" do
|
6
|
-
setup do
|
7
|
-
define_model :example, :attr => :string do
|
8
|
-
validates_numericality_of :attr
|
9
|
-
end
|
10
|
-
@model = Example.new
|
11
|
-
end
|
12
|
-
|
13
|
-
should "only allow numeric values for that attribute" do
|
14
|
-
assert_accepts validate_numericality_of(:attr), @model
|
15
|
-
end
|
16
|
-
|
17
|
-
should "not override the default message with a blank" do
|
18
|
-
assert_accepts validate_numericality_of(:attr).with_message(nil),
|
19
|
-
@model
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "a numeric attribute with a custom validation message" do
|
24
|
-
setup do
|
25
|
-
define_model :example, :attr => :string do
|
26
|
-
validates_numericality_of :attr, :message => 'custom'
|
27
|
-
end
|
28
|
-
@model = Example.new
|
29
|
-
end
|
30
|
-
|
31
|
-
should "only allow numeric values for that attribute with that message" do
|
32
|
-
assert_accepts validate_numericality_of(:attr).
|
33
|
-
with_message(/custom/),
|
34
|
-
@model
|
35
|
-
end
|
36
|
-
|
37
|
-
should "not allow numeric values for that attribute with another message" do
|
38
|
-
assert_rejects validate_numericality_of(:attr), @model
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context "a non-numeric attribute" do
|
43
|
-
setup do
|
44
|
-
@model = define_model(:example, :attr => :string).new
|
45
|
-
end
|
46
|
-
|
47
|
-
should "not only allow numeric values for that attribute" do
|
48
|
-
assert_rejects validate_numericality_of(:attr), @model
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ValidatePresenceOfMatcherTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
context "a required attribute" do
|
6
|
-
setup do
|
7
|
-
define_model :example, :attr => :string do
|
8
|
-
validates_presence_of :attr
|
9
|
-
end
|
10
|
-
@model = Example.new
|
11
|
-
end
|
12
|
-
|
13
|
-
should "require a value" do
|
14
|
-
assert_accepts validate_presence_of(:attr), @model
|
15
|
-
end
|
16
|
-
|
17
|
-
should "not override the default message with a blank" do
|
18
|
-
assert_accepts validate_presence_of(:attr).with_message(nil), @model
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "an optional attribute" do
|
23
|
-
setup do
|
24
|
-
@model = define_model(:example, :attr => :string).new
|
25
|
-
end
|
26
|
-
|
27
|
-
should "not require a value" do
|
28
|
-
assert_rejects validate_presence_of(:attr), @model
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context "a required has_many association" do
|
33
|
-
setup do
|
34
|
-
define_model :child
|
35
|
-
@model = define_model :parent do
|
36
|
-
has_many :children
|
37
|
-
validates_presence_of :children
|
38
|
-
end.new
|
39
|
-
end
|
40
|
-
|
41
|
-
should "require the attribute to be set" do
|
42
|
-
assert_accepts validate_presence_of(:children), @model
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "an optional has_many association" do
|
47
|
-
setup do
|
48
|
-
define_model :child
|
49
|
-
@model = define_model :parent do
|
50
|
-
has_many :children
|
51
|
-
end.new
|
52
|
-
end
|
53
|
-
|
54
|
-
should "not require the attribute to be set" do
|
55
|
-
assert_rejects validate_presence_of(:children), @model
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "a required has_and_belongs_to_many association" do
|
60
|
-
setup do
|
61
|
-
define_model :child
|
62
|
-
@model = define_model :parent do
|
63
|
-
has_and_belongs_to_many :children
|
64
|
-
validates_presence_of :children
|
65
|
-
end.new
|
66
|
-
end
|
67
|
-
|
68
|
-
should "require the attribute to be set" do
|
69
|
-
assert_accepts validate_presence_of(:children), @model
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "an optional has_and_belongs_to_many association" do
|
74
|
-
setup do
|
75
|
-
define_model :child
|
76
|
-
@model = define_model :parent do
|
77
|
-
has_and_belongs_to_many :children
|
78
|
-
end.new
|
79
|
-
end
|
80
|
-
|
81
|
-
should "not require the attribute to be set" do
|
82
|
-
assert_rejects validate_presence_of(:children), @model
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
@@ -1,147 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ValidateUniquenessOfMatcherTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
context "a unique attribute" do
|
6
|
-
setup do
|
7
|
-
@model = define_model(:example, :attr => :string,
|
8
|
-
:other => :integer) do
|
9
|
-
validates_uniqueness_of :attr
|
10
|
-
end.new
|
11
|
-
end
|
12
|
-
|
13
|
-
context "with an existing value" do
|
14
|
-
setup do
|
15
|
-
@existing = Example.create!(:attr => 'value', :other => 1)
|
16
|
-
end
|
17
|
-
|
18
|
-
should "require a unique value for that attribute" do
|
19
|
-
assert_accepts validate_uniqueness_of(:attr), @model
|
20
|
-
end
|
21
|
-
|
22
|
-
should "pass when the subject is an existing record" do
|
23
|
-
assert_accepts validate_uniqueness_of(:attr), @existing
|
24
|
-
end
|
25
|
-
|
26
|
-
should "fail when a scope is specified" do
|
27
|
-
assert_rejects validate_uniqueness_of(:attr).scoped_to(:other), @model
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "without an existing value" do
|
32
|
-
setup do
|
33
|
-
assert_nil Example.find(:first)
|
34
|
-
@matcher = validate_uniqueness_of(:attr)
|
35
|
-
end
|
36
|
-
|
37
|
-
should "fail to require a unique value" do
|
38
|
-
assert_rejects @matcher, @model
|
39
|
-
end
|
40
|
-
|
41
|
-
should "alert the tester that an existing value is not present" do
|
42
|
-
@matcher.matches?(@model)
|
43
|
-
assert @matcher.negative_failure_message =~ /^Can't find first .*/
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "a unique attribute with a custom error and an existing value" do
|
49
|
-
setup do
|
50
|
-
@model = define_model(:example, :attr => :string) do
|
51
|
-
validates_uniqueness_of :attr, :message => 'Bad value'
|
52
|
-
end.new
|
53
|
-
Example.create!
|
54
|
-
end
|
55
|
-
|
56
|
-
should "fail when checking the default message" do
|
57
|
-
assert_rejects validate_uniqueness_of(:attr), @model
|
58
|
-
end
|
59
|
-
|
60
|
-
should "fail when checking a message that doesn't match" do
|
61
|
-
assert_rejects validate_uniqueness_of(:attr).with_message(/abc/i), @model
|
62
|
-
end
|
63
|
-
|
64
|
-
should "pass when checking a message that matches" do
|
65
|
-
assert_accepts validate_uniqueness_of(:attr).with_message(/bad/i), @model
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
context "a scoped unique attribute with an existing value" do
|
70
|
-
setup do
|
71
|
-
@model = define_model(:example, :attr => :string,
|
72
|
-
:scope1 => :integer,
|
73
|
-
:scope2 => :integer) do
|
74
|
-
validates_uniqueness_of :attr, :scope => [:scope1, :scope2]
|
75
|
-
end.new
|
76
|
-
@existing = Example.create!(:attr => 'value', :scope1 => 1, :scope2 => 2)
|
77
|
-
end
|
78
|
-
|
79
|
-
should "pass when the correct scope is specified" do
|
80
|
-
assert_accepts validate_uniqueness_of(:attr).scoped_to(:scope1, :scope2),
|
81
|
-
@model
|
82
|
-
end
|
83
|
-
|
84
|
-
should "pass when the subject is an existing record" do
|
85
|
-
assert_accepts validate_uniqueness_of(:attr).scoped_to(:scope1, :scope2),
|
86
|
-
@existing
|
87
|
-
end
|
88
|
-
|
89
|
-
should "fail when a different scope is specified" do
|
90
|
-
assert_rejects validate_uniqueness_of(:attr).scoped_to(:scope1), @model
|
91
|
-
end
|
92
|
-
|
93
|
-
should "fail when no scope is specified" do
|
94
|
-
assert_rejects validate_uniqueness_of(:attr), @model
|
95
|
-
end
|
96
|
-
|
97
|
-
should "fail when a non-existent attribute is specified as a scope" do
|
98
|
-
assert_rejects validate_uniqueness_of(:attr).scoped_to(:fake), @model
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context "a non-unique attribute with an existing value" do
|
103
|
-
setup do
|
104
|
-
@model = define_model(:example, :attr => :string).new
|
105
|
-
Example.create!(:attr => 'value')
|
106
|
-
end
|
107
|
-
|
108
|
-
should "not require a unique value for that attribute" do
|
109
|
-
assert_rejects validate_uniqueness_of(:attr), @model
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
context "a case sensitive unique attribute with an existing value" do
|
114
|
-
setup do
|
115
|
-
@model = define_model(:example, :attr => :string) do
|
116
|
-
validates_uniqueness_of :attr, :case_sensitive => true
|
117
|
-
end.new
|
118
|
-
Example.create!(:attr => 'value')
|
119
|
-
end
|
120
|
-
|
121
|
-
should "not require a unique, case-insensitive value for that attribute" do
|
122
|
-
assert_rejects validate_uniqueness_of(:attr).case_insensitive, @model
|
123
|
-
end
|
124
|
-
|
125
|
-
should "require a unique, case-sensitive value for that attribute" do
|
126
|
-
assert_accepts validate_uniqueness_of(:attr), @model
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
context "a case sensitive unique integer attribute with an existing value" do
|
131
|
-
setup do
|
132
|
-
@model = define_model(:example, :attr => :integer) do
|
133
|
-
validates_uniqueness_of :attr, :case_sensitive => true
|
134
|
-
end.new
|
135
|
-
Example.create!(:attr => 'value')
|
136
|
-
end
|
137
|
-
|
138
|
-
should "require a unique, case-insensitive value for that attribute" do
|
139
|
-
assert_accepts validate_uniqueness_of(:attr).case_insensitive, @model
|
140
|
-
end
|
141
|
-
|
142
|
-
should "require a unique, case-sensitive value for that attribute" do
|
143
|
-
assert_accepts validate_uniqueness_of(:attr), @model
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class AssignToMatcherTest < ActionController::TestCase # :nodoc:
|
4
|
-
|
5
|
-
context "a controller that assigns to an instance variable" do
|
6
|
-
setup do
|
7
|
-
@controller = build_response { @var = 'value' }
|
8
|
-
end
|
9
|
-
|
10
|
-
should "accept assigning to that variable" do
|
11
|
-
assert_accepts assign_to(:var), @controller
|
12
|
-
end
|
13
|
-
|
14
|
-
should "accept assigning to that variable with the correct class" do
|
15
|
-
assert_accepts assign_to(:var).with_kind_of(String), @controller
|
16
|
-
end
|
17
|
-
|
18
|
-
should "reject assigning to that variable with another class" do
|
19
|
-
assert_rejects assign_to(:var).with_kind_of(Fixnum), @controller
|
20
|
-
end
|
21
|
-
|
22
|
-
should "accept assigning the correct value to that variable" do
|
23
|
-
assert_accepts assign_to(:var).with('value'), @controller
|
24
|
-
end
|
25
|
-
|
26
|
-
should "reject assigning another value to that variable" do
|
27
|
-
assert_rejects assign_to(:var).with('other'), @controller
|
28
|
-
end
|
29
|
-
|
30
|
-
should "reject assigning to another variable" do
|
31
|
-
assert_rejects assign_to(:other), @controller
|
32
|
-
end
|
33
|
-
|
34
|
-
should "accept assigning to the same value in the test context" do
|
35
|
-
@expected = 'value'
|
36
|
-
assert_accepts assign_to(:var).with { @expected }, @controller
|
37
|
-
end
|
38
|
-
|
39
|
-
should "reject assigning to the another value in the test context" do
|
40
|
-
@expected = 'other'
|
41
|
-
assert_rejects assign_to(:var).with { @expected }, @controller
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|