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,18 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class AutoloadMacroTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
context "The macro auto-loader" do
|
5
|
-
should "load macros from the plugins" do
|
6
|
-
assert self.class.respond_to?('plugin_macro')
|
7
|
-
end
|
8
|
-
|
9
|
-
should "load macros from the gems" do
|
10
|
-
assert self.class.respond_to?('gem_macro')
|
11
|
-
end
|
12
|
-
|
13
|
-
should "load custom macros from ROOT/test/shoulda_macros" do
|
14
|
-
assert self.class.respond_to?('custom_macro')
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
data/test/other/context_test.rb
DELETED
@@ -1,372 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ContextTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
def self.context_macro(&blk)
|
6
|
-
context "with a subcontext made by a macro" do
|
7
|
-
setup { @context_macro = :foo }
|
8
|
-
|
9
|
-
merge_block &blk
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# def self.context_macro(&blk)
|
14
|
-
# context "with a subcontext made by a macro" do
|
15
|
-
# setup { @context_macro = :foo }
|
16
|
-
# yield # <- this doesn't work.
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
|
20
|
-
context "context with setup block" do
|
21
|
-
setup do
|
22
|
-
@blah = "blah"
|
23
|
-
end
|
24
|
-
|
25
|
-
should "run the setup block" do
|
26
|
-
assert_equal "blah", @blah
|
27
|
-
end
|
28
|
-
|
29
|
-
should "have name set right" do
|
30
|
-
assert_match(/^test: context with setup block/, self.to_s)
|
31
|
-
end
|
32
|
-
|
33
|
-
context "and a subcontext" do
|
34
|
-
setup do
|
35
|
-
@blah = "#{@blah} twice"
|
36
|
-
end
|
37
|
-
|
38
|
-
should "be named correctly" do
|
39
|
-
assert_match(/^test: context with setup block and a subcontext should be named correctly/, self.to_s)
|
40
|
-
end
|
41
|
-
|
42
|
-
should "run the setup blocks in order" do
|
43
|
-
assert_equal @blah, "blah twice"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context_macro do
|
48
|
-
should "have name set right" do
|
49
|
-
assert_match(/^test: context with setup block with a subcontext made by a macro should have name set right/, self.to_s)
|
50
|
-
end
|
51
|
-
|
52
|
-
should "run the setup block of that context macro" do
|
53
|
-
assert_equal :foo, @context_macro
|
54
|
-
end
|
55
|
-
|
56
|
-
should "run the setup block of the main context" do
|
57
|
-
assert_equal "blah", @blah
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
context "another context with setup block" do
|
64
|
-
setup do
|
65
|
-
@blah = "foo"
|
66
|
-
end
|
67
|
-
|
68
|
-
should "have @blah == 'foo'" do
|
69
|
-
assert_equal "foo", @blah
|
70
|
-
end
|
71
|
-
|
72
|
-
should "have name set right" do
|
73
|
-
assert_match(/^test: another context with setup block/, self.to_s)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
context "context with method definition" do
|
78
|
-
setup do
|
79
|
-
def hello; "hi"; end
|
80
|
-
end
|
81
|
-
|
82
|
-
should "be able to read that method" do
|
83
|
-
assert_equal "hi", hello
|
84
|
-
end
|
85
|
-
|
86
|
-
should "have name set right" do
|
87
|
-
assert_match(/^test: context with method definition/, self.to_s)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
context "another context" do
|
92
|
-
should "not define @blah" do
|
93
|
-
assert_nil @blah
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context "context with multiple setups and/or teardowns" do
|
98
|
-
|
99
|
-
cleanup_count = 0
|
100
|
-
|
101
|
-
2.times do |i|
|
102
|
-
setup { cleanup_count += 1 }
|
103
|
-
teardown { cleanup_count -= 1 }
|
104
|
-
end
|
105
|
-
|
106
|
-
2.times do |i|
|
107
|
-
should "call all setups and all teardowns (check ##{i + 1})" do
|
108
|
-
assert_equal 2, cleanup_count
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
context "subcontexts" do
|
113
|
-
|
114
|
-
2.times do |i|
|
115
|
-
setup { cleanup_count += 1 }
|
116
|
-
teardown { cleanup_count -= 1 }
|
117
|
-
end
|
118
|
-
|
119
|
-
2.times do |i|
|
120
|
-
should "also call all setups and all teardowns in parent and subcontext (check ##{i + 1})" do
|
121
|
-
assert_equal 4, cleanup_count
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
end
|
128
|
-
|
129
|
-
should_eventually "pass, since it's unimplemented" do
|
130
|
-
flunk "what?"
|
131
|
-
end
|
132
|
-
|
133
|
-
should_eventually "not require a block when using should_eventually"
|
134
|
-
should "pass without a block, as that causes it to piggyback to should_eventually"
|
135
|
-
|
136
|
-
context "context for testing should piggybacking" do
|
137
|
-
should "call should_eventually as we are not passing a block"
|
138
|
-
end
|
139
|
-
|
140
|
-
context "context" do
|
141
|
-
context "with nested subcontexts" do
|
142
|
-
should_eventually "only print this statement once for a should_eventually"
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
class ::SomeModel; end
|
147
|
-
|
148
|
-
context "given a test named after a class" do
|
149
|
-
setup do
|
150
|
-
self.class.stubs(:name).returns("SomeModelTest")
|
151
|
-
end
|
152
|
-
|
153
|
-
should "determine the described type" do
|
154
|
-
assert_equal SomeModel, self.class.described_type
|
155
|
-
end
|
156
|
-
|
157
|
-
should "return a new instance of the described type as the subject if none exists" do
|
158
|
-
assert_kind_of SomeModel, subject
|
159
|
-
end
|
160
|
-
|
161
|
-
context "with an explicit subject block" do
|
162
|
-
setup { @expected = SomeModel.new }
|
163
|
-
subject { @expected }
|
164
|
-
should "return the result of the block as the subject" do
|
165
|
-
assert_equal @expected, subject
|
166
|
-
end
|
167
|
-
|
168
|
-
context "nested context block without a subject block" do
|
169
|
-
should "return the result of the parent context's subject block" do
|
170
|
-
assert_equal @expected, subject
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
class ShouldMatcherTest < Test::Unit::TestCase
|
178
|
-
class FakeMatcher
|
179
|
-
attr_reader :subject
|
180
|
-
attr_accessor :fail
|
181
|
-
|
182
|
-
def description
|
183
|
-
"do something"
|
184
|
-
end
|
185
|
-
|
186
|
-
def matches?(subject)
|
187
|
-
@subject = subject
|
188
|
-
!@fail
|
189
|
-
end
|
190
|
-
|
191
|
-
def failure_message
|
192
|
-
"a failure message"
|
193
|
-
end
|
194
|
-
|
195
|
-
def negative_failure_message
|
196
|
-
"not a failure message"
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
def run_test
|
201
|
-
@test_suite.run(@test_result) { |event, name |}
|
202
|
-
end
|
203
|
-
|
204
|
-
def setup
|
205
|
-
@matcher = FakeMatcher.new
|
206
|
-
@test_result = Test::Unit::TestResult.new
|
207
|
-
class << @test_result
|
208
|
-
def failure_messages
|
209
|
-
@failures.map { |failure| failure.message }
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
def create_test_suite(&definition)
|
215
|
-
test_class = Class.new(Test::Unit::TestCase, &definition)
|
216
|
-
test_class.suite
|
217
|
-
end
|
218
|
-
|
219
|
-
def assert_failed_with(message, test_result)
|
220
|
-
assert_equal 1, test_result.failure_count
|
221
|
-
assert_equal [message], test_result.failure_messages
|
222
|
-
end
|
223
|
-
|
224
|
-
def assert_passed(test_result)
|
225
|
-
assert_equal 0, test_result.failure_count
|
226
|
-
end
|
227
|
-
|
228
|
-
def assert_test_named(expected_name, test_suite)
|
229
|
-
name = test_suite.tests.map { |test| test.method_name }.first
|
230
|
-
assert name.include?(expected_name), "Expected #{name} to include #{expected_name}"
|
231
|
-
end
|
232
|
-
|
233
|
-
def self.should_use_positive_matcher
|
234
|
-
should "generate a test using the matcher's description" do
|
235
|
-
assert_test_named "should #{@matcher.description}", @test_suite
|
236
|
-
end
|
237
|
-
|
238
|
-
should "pass with a passing matcher" do
|
239
|
-
@matcher.fail = false
|
240
|
-
run_test
|
241
|
-
assert_passed @test_result
|
242
|
-
end
|
243
|
-
|
244
|
-
should "fail with a failing matcher" do
|
245
|
-
@matcher.fail = true
|
246
|
-
run_test
|
247
|
-
assert_failed_with @matcher.failure_message, @test_result
|
248
|
-
end
|
249
|
-
|
250
|
-
should "provide the subject" do
|
251
|
-
@matcher.fail = false
|
252
|
-
run_test
|
253
|
-
assert_equal 'a subject', @matcher.subject
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
def self.should_use_negative_matcher
|
258
|
-
should "generate a test using the matcher's description" do
|
259
|
-
assert_test_named "should not #{@matcher.description}", @test_suite
|
260
|
-
end
|
261
|
-
|
262
|
-
should "pass with a failing matcher" do
|
263
|
-
@matcher.fail = true
|
264
|
-
run_test
|
265
|
-
assert_passed @test_result
|
266
|
-
end
|
267
|
-
|
268
|
-
should "fail with a passing matcher" do
|
269
|
-
@matcher.fail = false
|
270
|
-
run_test
|
271
|
-
assert_failed_with @matcher.negative_failure_message, @test_result
|
272
|
-
end
|
273
|
-
|
274
|
-
should "provide the subject" do
|
275
|
-
@matcher.fail = false
|
276
|
-
run_test
|
277
|
-
assert_equal 'a subject', @matcher.subject
|
278
|
-
end
|
279
|
-
end
|
280
|
-
|
281
|
-
context "a should block with a matcher" do
|
282
|
-
setup do
|
283
|
-
matcher = @matcher
|
284
|
-
@test_suite = create_test_suite do
|
285
|
-
subject { 'a subject' }
|
286
|
-
should matcher
|
287
|
-
end
|
288
|
-
end
|
289
|
-
|
290
|
-
should_use_positive_matcher
|
291
|
-
end
|
292
|
-
|
293
|
-
context "a should block with a matcher within a context" do
|
294
|
-
setup do
|
295
|
-
matcher = @matcher
|
296
|
-
@test_suite = create_test_suite do
|
297
|
-
context "in context" do
|
298
|
-
subject { 'a subject' }
|
299
|
-
should matcher
|
300
|
-
end
|
301
|
-
end
|
302
|
-
end
|
303
|
-
|
304
|
-
should_use_positive_matcher
|
305
|
-
end
|
306
|
-
|
307
|
-
context "a should_not block with a matcher" do
|
308
|
-
setup do
|
309
|
-
matcher = @matcher
|
310
|
-
@test_suite = create_test_suite do
|
311
|
-
subject { 'a subject' }
|
312
|
-
should_not matcher
|
313
|
-
end
|
314
|
-
end
|
315
|
-
|
316
|
-
should_use_negative_matcher
|
317
|
-
end
|
318
|
-
|
319
|
-
context "a should_not block with a matcher within a context" do
|
320
|
-
setup do
|
321
|
-
matcher = @matcher
|
322
|
-
@test_suite = create_test_suite do
|
323
|
-
context "in context" do
|
324
|
-
subject { 'a subject' }
|
325
|
-
should_not matcher
|
326
|
-
end
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
330
|
-
should_use_negative_matcher
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
class Subject; end
|
335
|
-
|
336
|
-
class SubjectTest < ActiveSupport::TestCase
|
337
|
-
|
338
|
-
def setup
|
339
|
-
@expected = Subject.new
|
340
|
-
end
|
341
|
-
|
342
|
-
subject { @expected }
|
343
|
-
|
344
|
-
should "return a specified subject" do
|
345
|
-
assert_equal @expected, subject
|
346
|
-
end
|
347
|
-
end
|
348
|
-
|
349
|
-
class SubjectLazinessTest < ActiveSupport::TestCase
|
350
|
-
subject { Subject.new }
|
351
|
-
|
352
|
-
should "only build the subject once" do
|
353
|
-
assert_equal subject, subject
|
354
|
-
end
|
355
|
-
end
|
356
|
-
|
357
|
-
class SomeController < ActionController::Base
|
358
|
-
end
|
359
|
-
|
360
|
-
class ControllerSubjectTest < ActionController::TestCase
|
361
|
-
tests SomeController
|
362
|
-
|
363
|
-
should "use the controller as the subject outside a context" do
|
364
|
-
assert_equal @controller, subject
|
365
|
-
end
|
366
|
-
|
367
|
-
context "in a context" do
|
368
|
-
should "use the controller as the subject" do
|
369
|
-
assert_equal @controller, subject
|
370
|
-
end
|
371
|
-
end
|
372
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
class ConvertToShouldSyntaxTest < ActiveSupport::TestCase # :nodoc:
|
4
|
-
|
5
|
-
BEFORE_FIXTURE = <<-EOS
|
6
|
-
class DummyTest < ActiveSupport::TestCase
|
7
|
-
|
8
|
-
should "Not change this_word_with_underscores" do
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_should_be_working
|
12
|
-
assert true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_some_cool_stuff
|
16
|
-
assert true
|
17
|
-
end
|
18
|
-
|
19
|
-
def non_test_method
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
EOS
|
24
|
-
|
25
|
-
AFTER_FIXTURE = <<-EOS
|
26
|
-
class DummyTest < ActiveSupport::TestCase
|
27
|
-
|
28
|
-
should "Not change this_word_with_underscores" do
|
29
|
-
end
|
30
|
-
|
31
|
-
should "be working" do
|
32
|
-
assert true
|
33
|
-
end
|
34
|
-
|
35
|
-
should "RENAME ME: test some cool stuff" do
|
36
|
-
assert true
|
37
|
-
end
|
38
|
-
|
39
|
-
def non_test_method
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
EOS
|
44
|
-
|
45
|
-
FIXTURE_PATH = "./convert_to_should_syntax_fixture.dat"
|
46
|
-
|
47
|
-
RUBY = ENV['RUBY'] || 'ruby'
|
48
|
-
|
49
|
-
def test_convert_to_should_syntax
|
50
|
-
File.open(FIXTURE_PATH, "w") {|f| f.write(BEFORE_FIXTURE)}
|
51
|
-
cmd = "#{RUBY} #{File.join(File.dirname(__FILE__), '../../bin/convert_to_should_syntax')} #{FIXTURE_PATH}"
|
52
|
-
output = `#{cmd}`
|
53
|
-
File.unlink($1) if output.match(/has been stored in '([^']+)/)
|
54
|
-
assert_match(/has been converted/, output)
|
55
|
-
result = IO.read(FIXTURE_PATH)
|
56
|
-
assert_equal result, AFTER_FIXTURE
|
57
|
-
end
|
58
|
-
|
59
|
-
def teardown
|
60
|
-
File.unlink(FIXTURE_PATH)
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|