rmm5t-shoulda 2.0.6 → 2.9.1
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/README.rdoc +38 -10
- data/Rakefile +5 -3
- data/lib/shoulda.rb +7 -15
- data/lib/shoulda/action_mailer.rb +1 -1
- data/lib/shoulda/action_mailer/assertions.rb +32 -33
- data/lib/shoulda/active_record.rb +6 -2
- data/lib/shoulda/active_record/assertions.rb +62 -81
- data/lib/shoulda/active_record/helpers.rb +40 -0
- data/lib/shoulda/active_record/macros.rb +511 -640
- data/lib/shoulda/active_record/matchers.rb +42 -0
- data/lib/shoulda/active_record/matchers/allow_mass_assignment_of_matcher.rb +83 -0
- data/lib/shoulda/active_record/matchers/allow_value_matcher.rb +102 -0
- data/lib/shoulda/active_record/matchers/association_matcher.rb +226 -0
- data/lib/shoulda/active_record/matchers/ensure_inclusion_of_matcher.rb +87 -0
- data/lib/shoulda/active_record/matchers/ensure_length_of_matcher.rb +141 -0
- data/lib/shoulda/active_record/matchers/have_db_column_matcher.rb +169 -0
- data/lib/shoulda/active_record/matchers/have_index_matcher.rb +105 -0
- data/lib/shoulda/active_record/matchers/have_named_scope_matcher.rb +125 -0
- data/lib/shoulda/active_record/matchers/have_readonly_attribute_matcher.rb +59 -0
- data/lib/shoulda/active_record/matchers/validate_acceptance_of_matcher.rb +41 -0
- data/lib/shoulda/active_record/matchers/validate_numericality_of_matcher.rb +39 -0
- data/lib/shoulda/active_record/matchers/validate_presence_of_matcher.rb +60 -0
- data/lib/shoulda/active_record/matchers/validate_uniqueness_of_matcher.rb +148 -0
- data/lib/shoulda/active_record/matchers/validation_matcher.rb +56 -0
- data/lib/shoulda/assertions.rb +50 -40
- data/lib/shoulda/autoload_macros.rb +46 -0
- data/lib/shoulda/context.rb +124 -126
- data/lib/shoulda/helpers.rb +5 -7
- data/lib/shoulda/macros.rb +63 -64
- data/lib/shoulda/private_helpers.rb +16 -18
- data/lib/shoulda/rails.rb +5 -11
- data/lib/shoulda/rspec.rb +9 -0
- data/lib/shoulda/tasks/list_tests.rake +6 -1
- data/lib/shoulda/test_unit.rb +19 -0
- data/rails/init.rb +7 -1
- data/test/README +2 -2
- data/test/fail_macros.rb +16 -16
- data/test/functional/posts_controller_test.rb +33 -24
- data/test/functional/users_controller_test.rb +0 -19
- data/test/model_builder.rb +106 -0
- data/test/other/autoload_macro_test.rb +18 -0
- data/test/other/helpers_test.rb +58 -0
- data/test/other/private_helpers_test.rb +1 -1
- data/test/other/should_test.rb +16 -16
- data/test/rails_root/app/controllers/posts_controller.rb +6 -5
- data/test/rails_root/app/models/pets/dog.rb +10 -0
- data/test/rails_root/app/models/treat.rb +3 -0
- data/test/rails_root/app/models/user.rb +2 -2
- data/test/rails_root/app/views/layouts/posts.rhtml +2 -0
- data/test/rails_root/config/database.yml +1 -1
- data/test/rails_root/config/environments/{sqlite3.rb → test.rb} +0 -0
- data/test/rails_root/db/migrate/001_create_users.rb +3 -2
- data/test/rails_root/db/migrate/011_create_treats.rb +12 -0
- data/test/rails_root/test/shoulda_macros/custom_macro.rb +6 -0
- data/test/rails_root/vendor/gems/gem_with_macro-0.0.1/shoulda_macros/gem_macro.rb +6 -0
- data/test/rails_root/vendor/plugins/plugin_with_macro/shoulda_macros/plugin_macro.rb +6 -0
- data/test/test_helper.rb +3 -1
- data/test/unit/address_test.rb +1 -1
- data/test/unit/dog_test.rb +5 -2
- data/test/unit/post_test.rb +7 -3
- data/test/unit/product_test.rb +2 -2
- data/test/unit/tag_test.rb +2 -1
- data/test/unit/user_test.rb +17 -8
- metadata +54 -4
- data/lib/shoulda/controller.rb +0 -30
- data/lib/shoulda/controller/formats/html.rb +0 -201
- data/lib/shoulda/controller/formats/xml.rb +0 -170
- data/lib/shoulda/controller/helpers.rb +0 -64
- data/lib/shoulda/controller/macros.rb +0 -316
- data/lib/shoulda/controller/resource_options.rb +0 -236
- data/test/rails_root/app/models/dog.rb +0 -5
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
|
2
3
|
# Load the environment
|
3
|
-
ENV['RAILS_ENV'] = '
|
4
|
+
ENV['RAILS_ENV'] = 'test'
|
4
5
|
|
5
6
|
rails_root = File.dirname(__FILE__) + '/rails_root'
|
6
7
|
|
@@ -31,3 +32,4 @@ class Test::Unit::TestCase #:nodoc:
|
|
31
32
|
end
|
32
33
|
|
33
34
|
require 'test/fail_macros'
|
35
|
+
require 'test/model_builder'
|
data/test/unit/address_test.rb
CHANGED
@@ -4,7 +4,7 @@ class AddressTest < Test::Unit::TestCase
|
|
4
4
|
fixtures :all
|
5
5
|
|
6
6
|
should_belong_to :addressable
|
7
|
-
|
7
|
+
should_validate_uniqueness_of :title, :scoped_to => [:addressable_id, :addressable_type]
|
8
8
|
should_ensure_length_at_least :zip, 5
|
9
9
|
should_only_allow_numeric_values_for :zip
|
10
10
|
end
|
data/test/unit/dog_test.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../test_helper'
|
2
2
|
|
3
|
-
class DogTest < Test::Unit::TestCase
|
3
|
+
class Pets::DogTest < Test::Unit::TestCase
|
4
4
|
should_belong_to :user
|
5
|
-
should_belong_to :address
|
5
|
+
should_belong_to :address, :dependent => :destroy
|
6
|
+
should_have_many :treats
|
6
7
|
should_have_and_belong_to_many :fleas
|
8
|
+
should_require_attributes :treats, :fleas
|
9
|
+
should_validate_presence_of :owner_id
|
7
10
|
end
|
data/test/unit/post_test.rb
CHANGED
@@ -9,7 +9,11 @@ class PostTest < Test::Unit::TestCase
|
|
9
9
|
should_have_many :through_tags, :through => :taggings
|
10
10
|
|
11
11
|
should_require_unique_attributes :title
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
should_validate_presence_of :body, :message => /wtf/
|
13
|
+
should_validate_presence_of :title
|
14
|
+
should_validate_numericality_of :user_id
|
15
|
+
|
16
|
+
should_fail do
|
17
|
+
should_validate_uniqueness_of :title, :case_sensitive => false
|
18
|
+
end
|
15
19
|
end
|
data/test/unit/product_test.rb
CHANGED
@@ -6,7 +6,7 @@ class ProductTest < ActiveSupport::TestCase
|
|
6
6
|
@product = Product.new(:tangible => false)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
should_validate_presence_of :title
|
10
10
|
should_not_allow_values_for :size, "22"
|
11
11
|
should_allow_values_for :size, "22kb"
|
12
12
|
should_ensure_value_in_range :price, 0..99
|
@@ -17,7 +17,7 @@ class ProductTest < ActiveSupport::TestCase
|
|
17
17
|
@product = Product.new(:tangible => true)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
should_validate_presence_of :price
|
21
21
|
should_ensure_value_in_range :price, 1..9999
|
22
22
|
should_ensure_value_in_range :weight, 1..100
|
23
23
|
should_not_allow_values_for :size, "22", "10x15"
|
data/test/unit/tag_test.rb
CHANGED
@@ -7,8 +7,9 @@ class TagTest < Test::Unit::TestCase
|
|
7
7
|
should_ensure_length_at_least :name, 2
|
8
8
|
|
9
9
|
should_protect_attributes :secret
|
10
|
+
should_allow_mass_assignment_of :name
|
10
11
|
|
11
12
|
should_fail do
|
12
|
-
|
13
|
+
should_not_allow_mass_assignment_of :name
|
13
14
|
end
|
14
15
|
end
|
data/test/unit/user_test.rb
CHANGED
@@ -12,8 +12,16 @@ class UserTest < Test::Unit::TestCase
|
|
12
12
|
should_have_one :address
|
13
13
|
should_have_one :address, :dependent => :destroy
|
14
14
|
|
15
|
-
should_have_indices :email, :name
|
15
|
+
should_have_indices :email, :name
|
16
16
|
should_have_index :age
|
17
|
+
should_have_index [:email, :name], :unique => true
|
18
|
+
should_have_index :age, :unique => false
|
19
|
+
|
20
|
+
should_fail do
|
21
|
+
should_have_index :phone
|
22
|
+
should_have_index :email, :unique => false
|
23
|
+
should_have_index :age, :unique => true
|
24
|
+
end
|
17
25
|
|
18
26
|
should_have_named_scope :old, :conditions => "age > 50"
|
19
27
|
should_have_named_scope :eighteen, :conditions => { :age => 18 }
|
@@ -31,22 +39,23 @@ class UserTest < Test::Unit::TestCase
|
|
31
39
|
should_allow_values_for :email, "a@b.com", "asdf@asdf.com"
|
32
40
|
should_ensure_length_in_range :email, 1..100
|
33
41
|
should_ensure_value_in_range :age, 1..100
|
34
|
-
|
42
|
+
should_not_allow_mass_assignment_of :password
|
35
43
|
should_have_class_methods :find, :destroy
|
36
44
|
should_have_instance_methods :email, :age, :email=, :valid?
|
37
45
|
should_have_db_columns :name, :email, :age
|
38
|
-
should_have_db_column :id,
|
39
|
-
should_have_db_column :email, :type => "string", :default => nil,
|
40
|
-
:null => true, :
|
46
|
+
should_have_db_column :id, :type => "integer"
|
47
|
+
should_have_db_column :email, :type => "string", :default => nil, :precision => nil, :limit => 255,
|
48
|
+
:null => true, :scale => nil
|
49
|
+
should_validate_acceptance_of :eula
|
41
50
|
should_require_acceptance_of :eula
|
42
|
-
|
51
|
+
should_validate_uniqueness_of :email, :scoped_to => :name, :case_sensitive => false
|
43
52
|
|
44
53
|
should_ensure_length_is :ssn, 9, :message => "Social Security Number is not the right length"
|
45
|
-
|
54
|
+
should_validate_numericality_of :ssn
|
46
55
|
|
47
56
|
should_have_readonly_attributes :name
|
48
57
|
|
49
58
|
should_fail do
|
50
|
-
|
59
|
+
should_not_allow_mass_assignment_of :name, :age
|
51
60
|
end
|
52
61
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmm5t-shoulda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tammer Saleh
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-02-04 00:00:00 -08:00
|
13
13
|
default_executable: convert_to_should_syntax
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -34,9 +34,27 @@ files:
|
|
34
34
|
- lib/shoulda/action_mailer.rb
|
35
35
|
- lib/shoulda/active_record
|
36
36
|
- lib/shoulda/active_record/assertions.rb
|
37
|
+
- lib/shoulda/active_record/helpers.rb
|
37
38
|
- lib/shoulda/active_record/macros.rb
|
39
|
+
- lib/shoulda/active_record/matchers
|
40
|
+
- lib/shoulda/active_record/matchers/allow_mass_assignment_of_matcher.rb
|
41
|
+
- lib/shoulda/active_record/matchers/allow_value_matcher.rb
|
42
|
+
- lib/shoulda/active_record/matchers/association_matcher.rb
|
43
|
+
- lib/shoulda/active_record/matchers/ensure_inclusion_of_matcher.rb
|
44
|
+
- lib/shoulda/active_record/matchers/ensure_length_of_matcher.rb
|
45
|
+
- lib/shoulda/active_record/matchers/have_db_column_matcher.rb
|
46
|
+
- lib/shoulda/active_record/matchers/have_index_matcher.rb
|
47
|
+
- lib/shoulda/active_record/matchers/have_named_scope_matcher.rb
|
48
|
+
- lib/shoulda/active_record/matchers/have_readonly_attribute_matcher.rb
|
49
|
+
- lib/shoulda/active_record/matchers/validate_acceptance_of_matcher.rb
|
50
|
+
- lib/shoulda/active_record/matchers/validate_numericality_of_matcher.rb
|
51
|
+
- lib/shoulda/active_record/matchers/validate_presence_of_matcher.rb
|
52
|
+
- lib/shoulda/active_record/matchers/validate_uniqueness_of_matcher.rb
|
53
|
+
- lib/shoulda/active_record/matchers/validation_matcher.rb
|
54
|
+
- lib/shoulda/active_record/matchers.rb
|
38
55
|
- lib/shoulda/active_record.rb
|
39
56
|
- lib/shoulda/assertions.rb
|
57
|
+
- lib/shoulda/autoload_macros.rb
|
40
58
|
- lib/shoulda/context.rb
|
41
59
|
- lib/shoulda/controller
|
42
60
|
- lib/shoulda/controller/formats
|
@@ -51,10 +69,12 @@ files:
|
|
51
69
|
- lib/shoulda/private_helpers.rb
|
52
70
|
- lib/shoulda/proc_extensions.rb
|
53
71
|
- lib/shoulda/rails.rb
|
72
|
+
- lib/shoulda/rspec.rb
|
54
73
|
- lib/shoulda/tasks
|
55
74
|
- lib/shoulda/tasks/list_tests.rake
|
56
75
|
- lib/shoulda/tasks/yaml_to_shoulda.rake
|
57
76
|
- lib/shoulda/tasks.rb
|
77
|
+
- lib/shoulda/test_unit.rb
|
58
78
|
- lib/shoulda.rb
|
59
79
|
- rails/init.rb
|
60
80
|
- test/fail_macros.rb
|
@@ -69,7 +89,23 @@ files:
|
|
69
89
|
- test/functional
|
70
90
|
- test/functional/posts_controller_test.rb
|
71
91
|
- test/functional/users_controller_test.rb
|
92
|
+
- test/matchers
|
93
|
+
- test/matchers/allow_mass_assignment_of_matcher_test.rb
|
94
|
+
- test/matchers/allow_value_matcher_test.rb
|
95
|
+
- test/matchers/association_matcher_test.rb
|
96
|
+
- test/matchers/ensure_inclusion_of_matcher_test.rb
|
97
|
+
- test/matchers/ensure_length_of_matcher_test.rb
|
98
|
+
- test/matchers/have_db_column_matcher_test.rb
|
99
|
+
- test/matchers/have_index_matcher_test.rb
|
100
|
+
- test/matchers/have_named_scope_matcher_test.rb
|
101
|
+
- test/matchers/have_readonly_attributes_matcher_test.rb
|
102
|
+
- test/matchers/validate_acceptance_of_matcher_test.rb
|
103
|
+
- test/matchers/validate_numericality_of_matcher_test.rb
|
104
|
+
- test/matchers/validate_presence_of_matcher_test.rb
|
105
|
+
- test/matchers/validate_uniqueness_of_matcher_test.rb
|
106
|
+
- test/model_builder.rb
|
72
107
|
- test/other
|
108
|
+
- test/other/autoload_macro_test.rb
|
73
109
|
- test/other/context_test.rb
|
74
110
|
- test/other/convert_to_should_syntax_test.rb
|
75
111
|
- test/other/helpers_test.rb
|
@@ -87,13 +123,15 @@ files:
|
|
87
123
|
- test/rails_root/app/helpers/users_helper.rb
|
88
124
|
- test/rails_root/app/models
|
89
125
|
- test/rails_root/app/models/address.rb
|
90
|
-
- test/rails_root/app/models/dog.rb
|
91
126
|
- test/rails_root/app/models/flea.rb
|
92
127
|
- test/rails_root/app/models/friendship.rb
|
128
|
+
- test/rails_root/app/models/pets
|
129
|
+
- test/rails_root/app/models/pets/dog.rb
|
93
130
|
- test/rails_root/app/models/post.rb
|
94
131
|
- test/rails_root/app/models/product.rb
|
95
132
|
- test/rails_root/app/models/tag.rb
|
96
133
|
- test/rails_root/app/models/tagging.rb
|
134
|
+
- test/rails_root/app/models/treat.rb
|
97
135
|
- test/rails_root/app/models/user.rb
|
98
136
|
- test/rails_root/app/views
|
99
137
|
- test/rails_root/app/views/layouts
|
@@ -115,7 +153,7 @@ files:
|
|
115
153
|
- test/rails_root/config/database.yml
|
116
154
|
- test/rails_root/config/environment.rb
|
117
155
|
- test/rails_root/config/environments
|
118
|
-
- test/rails_root/config/environments/
|
156
|
+
- test/rails_root/config/environments/test.rb
|
119
157
|
- test/rails_root/config/initializers
|
120
158
|
- test/rails_root/config/initializers/new_rails_defaults.rb
|
121
159
|
- test/rails_root/config/initializers/shoulda.rb
|
@@ -132,9 +170,11 @@ files:
|
|
132
170
|
- test/rails_root/db/migrate/008_create_dogs_fleas.rb
|
133
171
|
- test/rails_root/db/migrate/009_create_products.rb
|
134
172
|
- test/rails_root/db/migrate/010_create_friendships.rb
|
173
|
+
- test/rails_root/db/migrate/011_create_treats.rb
|
135
174
|
- test/rails_root/db/schema.rb
|
136
175
|
- test/rails_root/log
|
137
176
|
- test/rails_root/log/sqlite3.log
|
177
|
+
- test/rails_root/log/test.log
|
138
178
|
- test/rails_root/public
|
139
179
|
- test/rails_root/public/404.html
|
140
180
|
- test/rails_root/public/422.html
|
@@ -142,8 +182,18 @@ files:
|
|
142
182
|
- test/rails_root/script
|
143
183
|
- test/rails_root/script/console
|
144
184
|
- test/rails_root/script/generate
|
185
|
+
- test/rails_root/test
|
186
|
+
- test/rails_root/test/shoulda_macros
|
187
|
+
- test/rails_root/test/shoulda_macros/custom_macro.rb
|
145
188
|
- test/rails_root/vendor
|
189
|
+
- test/rails_root/vendor/gems
|
190
|
+
- test/rails_root/vendor/gems/gem_with_macro-0.0.1
|
191
|
+
- test/rails_root/vendor/gems/gem_with_macro-0.0.1/shoulda_macros
|
192
|
+
- test/rails_root/vendor/gems/gem_with_macro-0.0.1/shoulda_macros/gem_macro.rb
|
146
193
|
- test/rails_root/vendor/plugins
|
194
|
+
- test/rails_root/vendor/plugins/plugin_with_macro
|
195
|
+
- test/rails_root/vendor/plugins/plugin_with_macro/shoulda_macros
|
196
|
+
- test/rails_root/vendor/plugins/plugin_with_macro/shoulda_macros/plugin_macro.rb
|
147
197
|
- test/README
|
148
198
|
- test/test_helper.rb
|
149
199
|
- test/unit
|
data/lib/shoulda/controller.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'shoulda'
|
2
|
-
require 'shoulda/controller/helpers'
|
3
|
-
require 'shoulda/controller/resource_options'
|
4
|
-
require 'shoulda/controller/macros'
|
5
|
-
|
6
|
-
module Test # :nodoc: all
|
7
|
-
module Unit
|
8
|
-
class TestCase
|
9
|
-
extend ThoughtBot::Shoulda::Controller::Macros
|
10
|
-
include ThoughtBot::Shoulda::Controller::Helpers
|
11
|
-
ThoughtBot::Shoulda::Controller::VALID_FORMATS.each do |format|
|
12
|
-
include "ThoughtBot::Shoulda::Controller::#{format.to_s.upcase}".constantize
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
require 'shoulda/active_record/assertions'
|
19
|
-
require 'shoulda/action_mailer/assertions'
|
20
|
-
|
21
|
-
module ActionController #:nodoc: all
|
22
|
-
module Integration
|
23
|
-
class Session
|
24
|
-
include ThoughtBot::Shoulda::Assertions
|
25
|
-
include ThoughtBot::Shoulda::Helpers
|
26
|
-
include ThoughtBot::Shoulda::ActiveRecord::Assertions
|
27
|
-
include ThoughtBot::Shoulda::ActionMailer::Assertions
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,201 +0,0 @@
|
|
1
|
-
module ThoughtBot # :nodoc:
|
2
|
-
module Shoulda # :nodoc:
|
3
|
-
module Controller # :nodoc:
|
4
|
-
module HTML # :nodoc: all
|
5
|
-
def self.included(other)
|
6
|
-
other.class_eval do
|
7
|
-
extend ThoughtBot::Shoulda::Controller::HTML::ClassMethods
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
module ClassMethods
|
12
|
-
def controller_name_from_class
|
13
|
-
self.name.gsub(/Test/, '')
|
14
|
-
end
|
15
|
-
|
16
|
-
def make_show_html_tests(res)
|
17
|
-
context "on GET to #{controller_name_from_class}#show" do
|
18
|
-
setup do
|
19
|
-
record = get_existing_record(res)
|
20
|
-
parent_params = make_parent_params(res, record)
|
21
|
-
get :show, parent_params.merge({ res.identifier => record.to_param })
|
22
|
-
end
|
23
|
-
|
24
|
-
if res.denied.actions.include?(:show)
|
25
|
-
should_not_assign_to res.object
|
26
|
-
should_redirect_to res.denied.redirect
|
27
|
-
should_set_the_flash_to res.denied.flash
|
28
|
-
else
|
29
|
-
should_assign_to res.object
|
30
|
-
should_respond_with :success
|
31
|
-
should_render_template :show
|
32
|
-
should_not_set_the_flash
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def make_edit_html_tests(res)
|
38
|
-
context "on GET to #{controller_name_from_class}#edit" do
|
39
|
-
setup do
|
40
|
-
@record = get_existing_record(res)
|
41
|
-
parent_params = make_parent_params(res, @record)
|
42
|
-
get :edit, parent_params.merge({ res.identifier => @record.to_param })
|
43
|
-
end
|
44
|
-
|
45
|
-
if res.denied.actions.include?(:edit)
|
46
|
-
should_not_assign_to res.object
|
47
|
-
should_redirect_to res.denied.redirect
|
48
|
-
should_set_the_flash_to res.denied.flash
|
49
|
-
else
|
50
|
-
should_assign_to res.object
|
51
|
-
should_respond_with :success
|
52
|
-
should_render_template :edit
|
53
|
-
should_not_set_the_flash
|
54
|
-
should_render_a_form
|
55
|
-
should "set @#{res.object} to requested instance" do
|
56
|
-
assert_equal @record, assigns(res.object)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def make_index_html_tests(res)
|
63
|
-
context "on GET to #{controller_name_from_class}#index" do
|
64
|
-
setup do
|
65
|
-
record = get_existing_record(res) rescue nil
|
66
|
-
parent_params = make_parent_params(res, record)
|
67
|
-
get(:index, parent_params)
|
68
|
-
end
|
69
|
-
|
70
|
-
if res.denied.actions.include?(:index)
|
71
|
-
should_not_assign_to res.object.to_s.pluralize
|
72
|
-
should_redirect_to res.denied.redirect
|
73
|
-
should_set_the_flash_to res.denied.flash
|
74
|
-
else
|
75
|
-
should_respond_with :success
|
76
|
-
should_assign_to res.object.to_s.pluralize
|
77
|
-
should_render_template :index
|
78
|
-
should_not_set_the_flash
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def make_new_html_tests(res)
|
84
|
-
context "on GET to #{controller_name_from_class}#new" do
|
85
|
-
setup do
|
86
|
-
record = get_existing_record(res) rescue nil
|
87
|
-
parent_params = make_parent_params(res, record)
|
88
|
-
get(:new, parent_params)
|
89
|
-
end
|
90
|
-
|
91
|
-
if res.denied.actions.include?(:new)
|
92
|
-
should_not_assign_to res.object
|
93
|
-
should_redirect_to res.denied.redirect
|
94
|
-
should_set_the_flash_to res.denied.flash
|
95
|
-
else
|
96
|
-
should_respond_with :success
|
97
|
-
should_assign_to res.object
|
98
|
-
should_not_set_the_flash
|
99
|
-
should_render_template :new
|
100
|
-
should_render_a_form
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def make_destroy_html_tests(res)
|
106
|
-
context "on DELETE to #{controller_name_from_class}#destroy" do
|
107
|
-
setup do
|
108
|
-
@record = get_existing_record(res)
|
109
|
-
parent_params = make_parent_params(res, @record)
|
110
|
-
delete :destroy, parent_params.merge({ res.identifier => @record.to_param })
|
111
|
-
end
|
112
|
-
|
113
|
-
if res.denied.actions.include?(:destroy)
|
114
|
-
should_redirect_to res.denied.redirect
|
115
|
-
should_set_the_flash_to res.denied.flash
|
116
|
-
|
117
|
-
should "not destroy record" do
|
118
|
-
assert_nothing_raised { assert @record.reload }
|
119
|
-
end
|
120
|
-
else
|
121
|
-
should_set_the_flash_to res.destroy.flash
|
122
|
-
if res.destroy.redirect.is_a? Symbol
|
123
|
-
should_respond_with res.destroy.redirect
|
124
|
-
else
|
125
|
-
should_redirect_to res.destroy.redirect
|
126
|
-
end
|
127
|
-
|
128
|
-
should "destroy record" do
|
129
|
-
assert_raises(::ActiveRecord::RecordNotFound, "@#{res.object} was not destroyed.") do
|
130
|
-
@record.reload
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def make_create_html_tests(res)
|
138
|
-
context "on POST to #{controller_name_from_class}#create with #{res.create.params.inspect}" do
|
139
|
-
setup do
|
140
|
-
record = get_existing_record(res) rescue nil
|
141
|
-
parent_params = make_parent_params(res, record)
|
142
|
-
@count = res.klass.count
|
143
|
-
post :create, parent_params.merge(res.object => res.create.params)
|
144
|
-
end
|
145
|
-
|
146
|
-
if res.denied.actions.include?(:create)
|
147
|
-
should_redirect_to res.denied.redirect
|
148
|
-
should_set_the_flash_to res.denied.flash
|
149
|
-
should_not_assign_to res.object
|
150
|
-
|
151
|
-
should "not create new record" do
|
152
|
-
assert_equal @count, res.klass.count
|
153
|
-
end
|
154
|
-
else
|
155
|
-
should_assign_to res.object
|
156
|
-
should_set_the_flash_to res.create.flash
|
157
|
-
if res.create.redirect.is_a? Symbol
|
158
|
-
should_respond_with res.create.redirect
|
159
|
-
else
|
160
|
-
should_redirect_to res.create.redirect
|
161
|
-
end
|
162
|
-
|
163
|
-
should "not have errors on @#{res.object}" do
|
164
|
-
assert_equal [], pretty_error_messages(assigns(res.object)), "@#{res.object} has errors:"
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def make_update_html_tests(res)
|
171
|
-
context "on PUT to #{controller_name_from_class}#update with #{res.create.params.inspect}" do
|
172
|
-
setup do
|
173
|
-
@record = get_existing_record(res)
|
174
|
-
parent_params = make_parent_params(res, @record)
|
175
|
-
put :update, parent_params.merge(res.identifier => @record.to_param, res.object => res.update.params)
|
176
|
-
end
|
177
|
-
|
178
|
-
if res.denied.actions.include?(:update)
|
179
|
-
should_not_assign_to res.object
|
180
|
-
should_redirect_to res.denied.redirect
|
181
|
-
should_set_the_flash_to res.denied.flash
|
182
|
-
else
|
183
|
-
should_assign_to res.object
|
184
|
-
should_set_the_flash_to(res.update.flash)
|
185
|
-
if res.update.redirect.is_a? Symbol
|
186
|
-
should_respond_with res.update.redirect
|
187
|
-
else
|
188
|
-
should_redirect_to res.update.redirect
|
189
|
-
end
|
190
|
-
|
191
|
-
should "not have errors on @#{res.object}" do
|
192
|
-
assert_equal [], pretty_error_messages(assigns(res.object)), "@#{res.object} has errors:"
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|