radar-resource_controller 0.6.6
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/LICENSE +22 -0
- data/README.rdoc +336 -0
- data/VERSION.yml +4 -0
- data/generators/scaffold_resource/USAGE +29 -0
- data/generators/scaffold_resource/scaffold_resource_generator.rb +179 -0
- data/generators/scaffold_resource/templates/controller.rb +2 -0
- data/generators/scaffold_resource/templates/fixtures.yml +10 -0
- data/generators/scaffold_resource/templates/functional_test.rb +57 -0
- data/generators/scaffold_resource/templates/helper.rb +2 -0
- data/generators/scaffold_resource/templates/migration.rb +15 -0
- data/generators/scaffold_resource/templates/model.rb +2 -0
- data/generators/scaffold_resource/templates/old_migration.rb +13 -0
- data/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
- data/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
- data/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
- data/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
- data/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
- data/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
- data/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
- data/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
- data/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
- data/generators/scaffold_resource/templates/unit_test.rb +7 -0
- data/generators/scaffold_resource/templates/view__form.erb +6 -0
- data/generators/scaffold_resource/templates/view__form.haml +5 -0
- data/generators/scaffold_resource/templates/view_edit.erb +16 -0
- data/generators/scaffold_resource/templates/view_edit.haml +11 -0
- data/generators/scaffold_resource/templates/view_index.erb +22 -0
- data/generators/scaffold_resource/templates/view_index.haml +19 -0
- data/generators/scaffold_resource/templates/view_new.erb +12 -0
- data/generators/scaffold_resource/templates/view_new.haml +9 -0
- data/generators/scaffold_resource/templates/view_show.erb +9 -0
- data/generators/scaffold_resource/templates/view_show.haml +9 -0
- data/lib/resource_controller/accessors.rb +77 -0
- data/lib/resource_controller/action_options.rb +40 -0
- data/lib/resource_controller/actions.rb +75 -0
- data/lib/resource_controller/base.rb +15 -0
- data/lib/resource_controller/class_methods.rb +24 -0
- data/lib/resource_controller/controller.rb +70 -0
- data/lib/resource_controller/failable_action_options.rb +25 -0
- data/lib/resource_controller/helpers/current_objects.rb +73 -0
- data/lib/resource_controller/helpers/internal.rb +90 -0
- data/lib/resource_controller/helpers/nested.rb +67 -0
- data/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
- data/lib/resource_controller/helpers/urls.rb +132 -0
- data/lib/resource_controller/helpers.rb +28 -0
- data/lib/resource_controller/response_collector.rb +27 -0
- data/lib/resource_controller/singleton.rb +15 -0
- data/lib/resource_controller.rb +26 -0
- data/lib/urligence.rb +50 -0
- data/rails/init.rb +6 -0
- data/test/Rakefile +10 -0
- data/test/app/controllers/accounts_controller.rb +6 -0
- data/test/app/controllers/application_controller.rb +6 -0
- data/test/app/controllers/cms/options_controller.rb +3 -0
- data/test/app/controllers/cms/personnel_controller.rb +2 -0
- data/test/app/controllers/cms/photos_controller.rb +6 -0
- data/test/app/controllers/cms/products_controller.rb +3 -0
- data/test/app/controllers/comments_controller.rb +3 -0
- data/test/app/controllers/images_controller.rb +4 -0
- data/test/app/controllers/options_controller.rb +8 -0
- data/test/app/controllers/people_controller.rb +9 -0
- data/test/app/controllers/photos_controller.rb +12 -0
- data/test/app/controllers/posts_controller.rb +10 -0
- data/test/app/controllers/projects_controller.rb +11 -0
- data/test/app/controllers/somethings_controller.rb +3 -0
- data/test/app/controllers/tags_controller.rb +13 -0
- data/test/app/controllers/users_controller.rb +12 -0
- data/test/app/helpers/accounts_helper.rb +2 -0
- data/test/app/helpers/application_helper.rb +3 -0
- data/test/app/helpers/cms/products_helper.rb +2 -0
- data/test/app/helpers/comments_helper.rb +2 -0
- data/test/app/helpers/images_helper.rb +2 -0
- data/test/app/helpers/options_helper.rb +2 -0
- data/test/app/helpers/people_helper.rb +2 -0
- data/test/app/helpers/photos_helper.rb +2 -0
- data/test/app/helpers/posts_helper.rb +2 -0
- data/test/app/helpers/projects_helper.rb +2 -0
- data/test/app/helpers/somethings_helper.rb +2 -0
- data/test/app/helpers/tags_helper.rb +2 -0
- data/test/app/helpers/users_helper.rb +2 -0
- data/test/app/models/account.rb +4 -0
- data/test/app/models/comment.rb +3 -0
- data/test/app/models/image.rb +3 -0
- data/test/app/models/option.rb +3 -0
- data/test/app/models/personnel.rb +3 -0
- data/test/app/models/photo.rb +5 -0
- data/test/app/models/post.rb +3 -0
- data/test/app/models/product.rb +3 -0
- data/test/app/models/project.rb +3 -0
- data/test/app/models/something.rb +2 -0
- data/test/app/models/tag.rb +3 -0
- data/test/app/models/user.rb +3 -0
- data/test/app/views/accounts/_form.html.erb +4 -0
- data/test/app/views/accounts/edit.html.erb +14 -0
- data/test/app/views/accounts/new.html.erb +12 -0
- data/test/app/views/accounts/show.html.erb +5 -0
- data/test/app/views/cms/options/edit.rhtml +17 -0
- data/test/app/views/cms/options/index.rhtml +20 -0
- data/test/app/views/cms/options/new.rhtml +16 -0
- data/test/app/views/cms/options/show.rhtml +8 -0
- data/test/app/views/cms/photos/edit.rhtml +17 -0
- data/test/app/views/cms/photos/index.rhtml +20 -0
- data/test/app/views/cms/photos/new.rhtml +16 -0
- data/test/app/views/cms/photos/show.rhtml +8 -0
- data/test/app/views/cms/products/edit.rhtml +17 -0
- data/test/app/views/cms/products/index.rhtml +20 -0
- data/test/app/views/cms/products/new.rhtml +16 -0
- data/test/app/views/cms/products/show.rhtml +8 -0
- data/test/app/views/comments/edit.rhtml +27 -0
- data/test/app/views/comments/index.rhtml +24 -0
- data/test/app/views/comments/new.rhtml +26 -0
- data/test/app/views/comments/show.rhtml +18 -0
- data/test/app/views/images/_form.html.erb +4 -0
- data/test/app/views/images/edit.html.erb +14 -0
- data/test/app/views/images/new.html.erb +12 -0
- data/test/app/views/layouts/application.rhtml +17 -0
- data/test/app/views/layouts/comments.rhtml +17 -0
- data/test/app/views/layouts/options.rhtml +17 -0
- data/test/app/views/layouts/people.rhtml +17 -0
- data/test/app/views/layouts/photos.rhtml +17 -0
- data/test/app/views/layouts/projects.rhtml +17 -0
- data/test/app/views/layouts/somethings.rhtml +17 -0
- data/test/app/views/layouts/tags.rhtml +17 -0
- data/test/app/views/options/_form.html.erb +8 -0
- data/test/app/views/options/edit.html.erb +16 -0
- data/test/app/views/options/index.html.erb +21 -0
- data/test/app/views/options/new.html.erb +12 -0
- data/test/app/views/options/show.html.erb +10 -0
- data/test/app/views/people/edit.rhtml +17 -0
- data/test/app/views/people/index.rhtml +20 -0
- data/test/app/views/people/new.rhtml +16 -0
- data/test/app/views/people/show.rhtml +8 -0
- data/test/app/views/photos/edit.rhtml +17 -0
- data/test/app/views/photos/index.rhtml +20 -0
- data/test/app/views/photos/new.rhtml +16 -0
- data/test/app/views/photos/show.rhtml +8 -0
- data/test/app/views/posts/edit.rhtml +22 -0
- data/test/app/views/posts/index.rhtml +22 -0
- data/test/app/views/posts/new.rhtml +21 -0
- data/test/app/views/posts/show.rhtml +13 -0
- data/test/app/views/projects/edit.rhtml +17 -0
- data/test/app/views/projects/index.rhtml +20 -0
- data/test/app/views/projects/new.rhtml +16 -0
- data/test/app/views/projects/show.rhtml +8 -0
- data/test/app/views/somethings/edit.rhtml +17 -0
- data/test/app/views/somethings/index.rhtml +20 -0
- data/test/app/views/somethings/new.rhtml +16 -0
- data/test/app/views/somethings/show.rhtml +8 -0
- data/test/app/views/tags/edit.rhtml +17 -0
- data/test/app/views/tags/index.rhtml +20 -0
- data/test/app/views/tags/index.rjs +0 -0
- data/test/app/views/tags/new.rhtml +16 -0
- data/test/app/views/tags/show.rhtml +8 -0
- data/test/app/views/users/edit.rhtml +17 -0
- data/test/app/views/users/index.rhtml +20 -0
- data/test/app/views/users/new.rhtml +16 -0
- data/test/app/views/users/show.rhtml +8 -0
- data/test/config/boot.rb +110 -0
- data/test/config/database.yml +9 -0
- data/test/config/environment.rb +49 -0
- data/test/config/environments/development.rb +17 -0
- data/test/config/environments/test.rb +19 -0
- data/test/config/initializers/inflections.rb +14 -0
- data/test/config/routes.rb +61 -0
- data/test/db/migrate/001_create_posts.rb +12 -0
- data/test/db/migrate/002_create_products.rb +11 -0
- data/test/db/migrate/003_create_comments.rb +13 -0
- data/test/db/migrate/004_create_options.rb +13 -0
- data/test/db/migrate/005_create_photos.rb +11 -0
- data/test/db/migrate/006_create_tags.rb +17 -0
- data/test/db/migrate/007_create_somethings.rb +11 -0
- data/test/db/migrate/008_create_accounts.rb +11 -0
- data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
- data/test/db/migrate/010_create_projects.rb +11 -0
- data/test/db/migrate/011_create_images.rb +12 -0
- data/test/db/migrate/012_create_users.rb +11 -0
- data/test/db/migrate/013_create_personnel.rb +11 -0
- data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
- data/test/db/schema.rb +78 -0
- data/test/script/console +3 -0
- data/test/script/destroy +3 -0
- data/test/script/generate +3 -0
- data/test/script/server +3 -0
- data/test/test/fixtures/accounts.yml +7 -0
- data/test/test/fixtures/comments.yml +11 -0
- data/test/test/fixtures/images.yml +6 -0
- data/test/test/fixtures/options.yml +9 -0
- data/test/test/fixtures/personnel.yml +5 -0
- data/test/test/fixtures/photos.yml +9 -0
- data/test/test/fixtures/photos_tags.yml +3 -0
- data/test/test/fixtures/posts.yml +9 -0
- data/test/test/fixtures/products.yml +7 -0
- data/test/test/fixtures/projects.yml +7 -0
- data/test/test/fixtures/somethings.yml +7 -0
- data/test/test/fixtures/tags.yml +7 -0
- data/test/test/fixtures/users.yml +5 -0
- data/test/test/functional/cms/options_controller_test.rb +23 -0
- data/test/test/functional/cms/photos_controller_test.rb +43 -0
- data/test/test/functional/cms/products_controller_test.rb +23 -0
- data/test/test/functional/comments_controller_test.rb +26 -0
- data/test/test/functional/images_controller_test.rb +37 -0
- data/test/test/functional/people_controller_test.rb +34 -0
- data/test/test/functional/photos_controller_test.rb +130 -0
- data/test/test/functional/posts_controller_test.rb +34 -0
- data/test/test/functional/projects_controller_test.rb +44 -0
- data/test/test/functional/somethings_controller_test.rb +28 -0
- data/test/test/functional/tags_controller_test.rb +64 -0
- data/test/test/functional/users_controller_test.rb +24 -0
- data/test/test/test_helper.rb +13 -0
- data/test/test/unit/accessors_test.rb +110 -0
- data/test/test/unit/account_test.rb +7 -0
- data/test/test/unit/action_options_test.rb +109 -0
- data/test/test/unit/base_test.rb +11 -0
- data/test/test/unit/comment_test.rb +10 -0
- data/test/test/unit/failable_action_options_test.rb +77 -0
- data/test/test/unit/helpers/current_objects_test.rb +133 -0
- data/test/test/unit/helpers/internal_test.rb +106 -0
- data/test/test/unit/helpers/nested_test.rb +86 -0
- data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
- data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
- data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
- data/test/test/unit/helpers/urls_test.rb +75 -0
- data/test/test/unit/helpers_test.rb +25 -0
- data/test/test/unit/image_test.rb +7 -0
- data/test/test/unit/option_test.rb +10 -0
- data/test/test/unit/photo_test.rb +10 -0
- data/test/test/unit/post_test.rb +10 -0
- data/test/test/unit/project_test.rb +10 -0
- data/test/test/unit/response_collector_test.rb +49 -0
- data/test/test/unit/something_test.rb +10 -0
- data/test/test/unit/tag_test.rb +10 -0
- data/test/test/unit/urligence_test.rb +203 -0
- metadata +383 -0
@@ -0,0 +1,130 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'photos_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class PhotosController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class PhotosControllerTest < ActionController::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = PhotosController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
@photo = Photo.find 1
|
13
|
+
end
|
14
|
+
|
15
|
+
context "actions specified" do
|
16
|
+
should "not respond to update" do
|
17
|
+
assert !@controller.respond_to?(:update)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
should_be_restful do |resource|
|
22
|
+
resource.formats = [:html]
|
23
|
+
|
24
|
+
resource.actions = [:index, :new, :create, :destroy, :show, :edit]
|
25
|
+
resource.create.params = {:title => 'Some Photo Title'}
|
26
|
+
resource.create.flash = "Some Photo Title was created!"
|
27
|
+
end
|
28
|
+
|
29
|
+
context "with user as parent" do
|
30
|
+
context "on get to :index" do
|
31
|
+
setup do
|
32
|
+
get :index, :user_id => 1
|
33
|
+
end
|
34
|
+
|
35
|
+
should_respond_with :success
|
36
|
+
should_render_template "index"
|
37
|
+
should_assign_to :photos
|
38
|
+
should_assign_to :user
|
39
|
+
should "scope photos to user" do
|
40
|
+
assert assigns(:photos).all? { |photo| photo.user.id == 1 }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "on post to :create" do
|
45
|
+
setup do
|
46
|
+
post :create, :user_id => 1, :photo => {}
|
47
|
+
end
|
48
|
+
|
49
|
+
should_redirect_to 'user_photo_path(@photo.user, @photo)'
|
50
|
+
should_assign_to :photo
|
51
|
+
should_assign_to :user
|
52
|
+
should "scope photo to user" do
|
53
|
+
assert accounts(:one), assigns(:photo).user
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# url helpers integration
|
59
|
+
|
60
|
+
context "url, path, and hash_for helpers" do
|
61
|
+
setup do
|
62
|
+
get :index
|
63
|
+
end
|
64
|
+
|
65
|
+
should "return collection url" do
|
66
|
+
assert_equal photos_url, @controller.send(:collection_url)
|
67
|
+
end
|
68
|
+
|
69
|
+
should "return collection path" do
|
70
|
+
assert_equal photos_path, @controller.send(:collection_path)
|
71
|
+
end
|
72
|
+
|
73
|
+
should "return hash for collection url" do
|
74
|
+
assert_equal hash_for_photos_url, @controller.send(:hash_for_collection_url)
|
75
|
+
end
|
76
|
+
|
77
|
+
should "return hash for collection path" do
|
78
|
+
assert_equal hash_for_photos_path, @controller.send(:hash_for_collection_path)
|
79
|
+
end
|
80
|
+
|
81
|
+
should "return object url" do
|
82
|
+
assert_equal photo_url(photos(:one)), @controller.send(:object_url, photos(:one))
|
83
|
+
end
|
84
|
+
|
85
|
+
should "return object path" do
|
86
|
+
assert_equal photo_path(photos(:one)), @controller.send(:object_path, photos(:one))
|
87
|
+
end
|
88
|
+
|
89
|
+
should "return hash_for object url" do
|
90
|
+
assert_equal hash_for_photo_url(:id => @photo.to_param), @controller.send(:hash_for_object_url, photos(:one))
|
91
|
+
end
|
92
|
+
|
93
|
+
should "return hash_for object path" do
|
94
|
+
assert_equal hash_for_photo_path(:id => @photo.to_param), @controller.send(:hash_for_object_path, photos(:one))
|
95
|
+
end
|
96
|
+
|
97
|
+
should "return edit object url" do
|
98
|
+
assert_equal edit_photo_url(photos(:one)), @controller.send(:edit_object_url, photos(:one))
|
99
|
+
end
|
100
|
+
|
101
|
+
should "return edit object path" do
|
102
|
+
assert_equal edit_photo_path(photos(:one)), @controller.send(:edit_object_path, photos(:one))
|
103
|
+
end
|
104
|
+
|
105
|
+
should "return hash_for_edit object url" do
|
106
|
+
assert_equal hash_for_edit_photo_url(:id => @photo.to_param), @controller.send(:hash_for_edit_object_url, photos(:one))
|
107
|
+
end
|
108
|
+
|
109
|
+
should "return hash_for_edit object path" do
|
110
|
+
assert_equal hash_for_edit_photo_path(:id => @photo.to_param), @controller.send(:hash_for_edit_object_path, photos(:one))
|
111
|
+
end
|
112
|
+
|
113
|
+
should "return new object url" do
|
114
|
+
assert_equal new_photo_url, @controller.send(:new_object_url)
|
115
|
+
end
|
116
|
+
|
117
|
+
should "return new object path" do
|
118
|
+
assert_equal new_photo_path, @controller.send(:new_object_path)
|
119
|
+
end
|
120
|
+
|
121
|
+
should "return hash_for_new object url" do
|
122
|
+
assert_equal hash_for_new_photo_url, @controller.send(:hash_for_new_object_url)
|
123
|
+
end
|
124
|
+
|
125
|
+
should "return hash_for_new object path" do
|
126
|
+
assert_equal hash_for_new_photo_path, @controller.send(:hash_for_new_object_path)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'posts_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class PostsController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class PostsControllerTest < ActionController::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = PostsController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
@post = Post.find 1
|
13
|
+
end
|
14
|
+
|
15
|
+
should_be_restful do |resource|
|
16
|
+
resource.formats = [:html]
|
17
|
+
|
18
|
+
resource.actions = :all
|
19
|
+
end
|
20
|
+
|
21
|
+
context "on post to :create" do
|
22
|
+
setup do
|
23
|
+
post :create, :post => {}
|
24
|
+
end
|
25
|
+
|
26
|
+
should "name the post 'a great post'" do
|
27
|
+
assert_equal 'a great post', assigns(:post).title
|
28
|
+
end
|
29
|
+
|
30
|
+
should "give the post a body of '...'" do
|
31
|
+
assert_equal '...', assigns(:post).body
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'projects_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class ProjectsController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class ProjectsControllerTest < ActionController::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = ProjectsController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
@project = projects :one
|
13
|
+
end
|
14
|
+
|
15
|
+
context "on DELETE to :destroy that fails" do
|
16
|
+
setup do
|
17
|
+
Project.any_instance.stubs(:destroy).returns(false)
|
18
|
+
delete :destroy, :id => @project.to_param
|
19
|
+
end
|
20
|
+
|
21
|
+
should_respond_with :redirect
|
22
|
+
should_redirect_to "project_url(@project)"
|
23
|
+
end
|
24
|
+
|
25
|
+
context "on failed post to :create" do
|
26
|
+
setup do
|
27
|
+
post :create, :project => { :title => "" }
|
28
|
+
end
|
29
|
+
|
30
|
+
should "have error flash message" do
|
31
|
+
assert_equal 'Project was not created.', flash[:error]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "on failed update" do
|
36
|
+
setup do
|
37
|
+
put :update, :id => 1, :project => { :title => "" }
|
38
|
+
end
|
39
|
+
|
40
|
+
should "have error flash message" do
|
41
|
+
assert_equal 'Project was not updated.', flash.now[:error]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'somethings_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class SomethingsController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class SomethingsControllerTest < ActionController::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = SomethingsController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
@something = somethings :one
|
13
|
+
end
|
14
|
+
|
15
|
+
context "actions specified" do
|
16
|
+
[:create, :edit, :update, :destroy, :new].each do |action|
|
17
|
+
should "not respond to #{action}" do
|
18
|
+
assert !@controller.respond_to?(action)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
should_be_restful do |resource|
|
24
|
+
resource.formats = [:html]
|
25
|
+
|
26
|
+
resource.actions = [:index, :show]
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'tags_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class TagsController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class TagsControllerTest < ActionController::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = TagsController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
@tag = Tag.find 1
|
13
|
+
end
|
14
|
+
|
15
|
+
context "with photo as parent" do
|
16
|
+
context "get to :index" do
|
17
|
+
setup do
|
18
|
+
get :index, :photo_id => 1
|
19
|
+
end
|
20
|
+
|
21
|
+
should_assign_to :products
|
22
|
+
should_render_template "index"
|
23
|
+
should_respond_with :success
|
24
|
+
|
25
|
+
should "respond with html" do
|
26
|
+
assert_equal 'text/html', @response.content_type
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "xhr to :index" do
|
31
|
+
setup do
|
32
|
+
xhr :get, :index, :photo_id => 1
|
33
|
+
end
|
34
|
+
|
35
|
+
should_assign_to :products
|
36
|
+
should_respond_with :success
|
37
|
+
|
38
|
+
should "respond with rjs" do
|
39
|
+
assert_equal 'text/javascript', @response.content_type
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "post to create" do
|
44
|
+
setup do
|
45
|
+
post :create, :photo_id => 1, :tag => {:name => "Hello!"}
|
46
|
+
end
|
47
|
+
|
48
|
+
should "add tag to photo" do
|
49
|
+
assert assigns(:photo).tags.include?(assigns(:tag)), "photo does not include new tag"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "without photo as parent" do
|
55
|
+
should_be_restful do |resource|
|
56
|
+
resource.formats = [:html]
|
57
|
+
end
|
58
|
+
|
59
|
+
should "render text for a missing object" do
|
60
|
+
get :show, :id => 50000
|
61
|
+
assert @response.body.match(/not found/i), @response.body
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'users_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class UsersController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class UsersControllerTest < ActionController::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = UsersController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
@dude = accounts :one
|
13
|
+
end
|
14
|
+
|
15
|
+
should_be_restful do |resource|
|
16
|
+
resource.formats = [:html]
|
17
|
+
resource.klass = Account
|
18
|
+
resource.object = :dude
|
19
|
+
|
20
|
+
resource.create.redirect = 'dude_url(@dude)'
|
21
|
+
resource.update.redirect = 'dude_url(@dude)'
|
22
|
+
resource.destroy.redirect = 'dudes_url'
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
$:.reject! { |path| path.include? 'TextMate' }
|
2
|
+
require 'test/unit'
|
3
|
+
ENV["RAILS_ENV"] = "test"
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
5
|
+
require 'test_help'
|
6
|
+
require 'mocha'
|
7
|
+
|
8
|
+
class ActiveSupport::TestCase
|
9
|
+
self.use_transactional_fixtures = true
|
10
|
+
self.use_instantiated_fixtures = false
|
11
|
+
|
12
|
+
fixtures :all
|
13
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../test_helper'
|
2
|
+
|
3
|
+
class AccessorsTest < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
PostsController.class_eval do
|
6
|
+
extend ResourceController::Accessors
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
context "scoping reader" do
|
11
|
+
setup do
|
12
|
+
PostsController.class_eval do
|
13
|
+
class_scoping_reader :create, ResourceController::ActionOptions.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
should "access create as usual" do
|
18
|
+
PostsController.class_eval do
|
19
|
+
create.flash "asdf"
|
20
|
+
end
|
21
|
+
|
22
|
+
assert_equal "asdf", PostsController.create.flash
|
23
|
+
end
|
24
|
+
|
25
|
+
should "scope to create object in a block" do
|
26
|
+
PostsController.class_eval do
|
27
|
+
create do
|
28
|
+
flash "asdf"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
assert_equal "asdf", PostsController.create.flash
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "reader/writer method" do
|
37
|
+
setup do
|
38
|
+
PostsController.class_eval do
|
39
|
+
reader_writer :flash
|
40
|
+
end
|
41
|
+
|
42
|
+
@controller = PostsController.new
|
43
|
+
end
|
44
|
+
|
45
|
+
should "set and get var" do
|
46
|
+
@controller.flash "something"
|
47
|
+
assert_equal "something", @controller.flash
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "class reader/writer method" do
|
52
|
+
setup do
|
53
|
+
PostsController.class_eval do
|
54
|
+
class_reader_writer :flash
|
55
|
+
end
|
56
|
+
|
57
|
+
@controller = PostsController.new
|
58
|
+
end
|
59
|
+
|
60
|
+
should "initialize var" do
|
61
|
+
assert_nil PostsController.flash
|
62
|
+
assert_nil @controller.flash
|
63
|
+
end
|
64
|
+
|
65
|
+
should "set and get var" do
|
66
|
+
PostsController.flash "something"
|
67
|
+
assert_equal "something", PostsController.flash
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "block accessor" do
|
72
|
+
setup do
|
73
|
+
PostsController.class_eval do
|
74
|
+
block_accessor :something
|
75
|
+
end
|
76
|
+
@controller = PostsController.new
|
77
|
+
end
|
78
|
+
|
79
|
+
should "store blocks" do
|
80
|
+
@controller.something {}
|
81
|
+
assert @controller.something.first
|
82
|
+
end
|
83
|
+
|
84
|
+
should "store symbols as well" do
|
85
|
+
@controller.something(:method, :method_two) {}
|
86
|
+
assert_equal :method, @controller.something[0]
|
87
|
+
assert_equal :method_two, @controller.something[1]
|
88
|
+
assert @controller.something[2].is_a?(Proc)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "reader writer" do
|
93
|
+
setup do
|
94
|
+
PostsController.class_eval do
|
95
|
+
reader_writer :rw
|
96
|
+
end
|
97
|
+
|
98
|
+
@controller = PostsController.new
|
99
|
+
end
|
100
|
+
|
101
|
+
should "store blocks" do
|
102
|
+
@controller.rw do
|
103
|
+
"asdf"
|
104
|
+
end
|
105
|
+
|
106
|
+
assert @controller.rw.is_a?(Proc), @controller.rw
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../test_helper'
|
2
|
+
|
3
|
+
class ActionOptionsTest < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
@controller = PostsController.new
|
6
|
+
@create = ResourceController::ActionOptions.new
|
7
|
+
end
|
8
|
+
|
9
|
+
should "have attr accessor for flash" do
|
10
|
+
@create.flash "Successfully created."
|
11
|
+
assert_equal "Successfully created.", @create.flash
|
12
|
+
end
|
13
|
+
|
14
|
+
should "have attr accessor for flash_now" do
|
15
|
+
@create.flash_now "Successfully created."
|
16
|
+
assert_equal "Successfully created.", @create.flash_now
|
17
|
+
end
|
18
|
+
|
19
|
+
%w(before after).each do |accessor|
|
20
|
+
should "have a block accessor for #{accessor}" do
|
21
|
+
@create.send(accessor) do
|
22
|
+
"return_something"
|
23
|
+
end
|
24
|
+
|
25
|
+
assert_equal "return_something", @create.send(accessor).first.call(nil)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "response yielding to response collector" do
|
30
|
+
setup do
|
31
|
+
@create.response do |wants|
|
32
|
+
wants.html
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
should "accept symbols" do
|
37
|
+
@create.response :html, :js, :xml
|
38
|
+
assert @create.wants[:html]
|
39
|
+
assert @create.wants[:js]
|
40
|
+
assert @create.wants[:xml]
|
41
|
+
end
|
42
|
+
|
43
|
+
should "accept symbols and blocks" do
|
44
|
+
@create.responds_to :html do |wants| # note the aliasing of response here
|
45
|
+
wants.js
|
46
|
+
end
|
47
|
+
|
48
|
+
assert @create.wants[:html]
|
49
|
+
assert @create.wants[:js]
|
50
|
+
end
|
51
|
+
|
52
|
+
should "collect responses" do
|
53
|
+
assert @create.wants[:html]
|
54
|
+
end
|
55
|
+
|
56
|
+
should "clear the collector on a subsequent call" do
|
57
|
+
@create.respond_to do |wants| # note the other aliasing of response
|
58
|
+
wants.js
|
59
|
+
end
|
60
|
+
|
61
|
+
assert_nil @create.wants[:html]
|
62
|
+
assert @create.wants[:js]
|
63
|
+
end
|
64
|
+
|
65
|
+
should "add response without clearing" do
|
66
|
+
@create.wants.js
|
67
|
+
assert @create.wants[:js]
|
68
|
+
assert @create.wants[:html]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "duplicating action options" do
|
73
|
+
setup do
|
74
|
+
@opts = ResourceController::ActionOptions.new
|
75
|
+
@opts.wants.js
|
76
|
+
@opts.after {}
|
77
|
+
@opts.before {}
|
78
|
+
@opts.flash ''
|
79
|
+
@opts.flash_now ''
|
80
|
+
@dup = @opts.dup
|
81
|
+
end
|
82
|
+
|
83
|
+
should "duplicate the response collector" do
|
84
|
+
assert !@opts.wants.equal?(@dup.wants)
|
85
|
+
assert @dup.wants[:js]
|
86
|
+
end
|
87
|
+
|
88
|
+
should "duplicate the after block" do
|
89
|
+
assert !@opts.after.equal?(@dup.after)
|
90
|
+
assert @dup.after
|
91
|
+
end
|
92
|
+
|
93
|
+
should "duplicate the before block" do
|
94
|
+
assert !@opts.before.equal?(@dup.before)
|
95
|
+
assert @dup.before
|
96
|
+
end
|
97
|
+
|
98
|
+
should "duplicate the flash" do
|
99
|
+
assert !@opts.flash.equal?(@dup.flash)
|
100
|
+
assert @dup.flash
|
101
|
+
end
|
102
|
+
|
103
|
+
should "duplicate the flash_now" do
|
104
|
+
assert !@opts.flash_now.equal?(@dup.flash_now)
|
105
|
+
assert @dup.flash_now
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../test_helper'
|
2
|
+
|
3
|
+
class FailableActionOptionsTest < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
@controller = PostsController.new
|
6
|
+
@create = ResourceController::FailableActionOptions.new
|
7
|
+
end
|
8
|
+
|
9
|
+
should "have success and fails" do
|
10
|
+
assert ResourceController::ActionOptions, @create.success.class
|
11
|
+
assert ResourceController::ActionOptions, @create.fails.class
|
12
|
+
end
|
13
|
+
|
14
|
+
%w(before).each do |accessor|
|
15
|
+
should "have a block accessor for #{accessor}" do
|
16
|
+
@create.send(accessor) do
|
17
|
+
"return_something"
|
18
|
+
end
|
19
|
+
|
20
|
+
assert_equal "return_something", @create.send(accessor).first.call(nil)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
should "delegate flash to success" do
|
25
|
+
@create.flash "Successfully created."
|
26
|
+
assert_equal "Successfully created.", @create.success.flash
|
27
|
+
end
|
28
|
+
|
29
|
+
should "delegate after to success" do
|
30
|
+
@create.after do
|
31
|
+
"something"
|
32
|
+
end
|
33
|
+
|
34
|
+
assert_equal "something", @create.success.after.first.call
|
35
|
+
end
|
36
|
+
|
37
|
+
should "delegate response to success" do
|
38
|
+
@create.response do |wants|
|
39
|
+
wants.html
|
40
|
+
end
|
41
|
+
|
42
|
+
assert @create.wants[:html]
|
43
|
+
end
|
44
|
+
|
45
|
+
should "delegate wants to success" do
|
46
|
+
@create.wants.html
|
47
|
+
|
48
|
+
assert @create.wants[:html]
|
49
|
+
end
|
50
|
+
|
51
|
+
context "duplication" do
|
52
|
+
setup do
|
53
|
+
@opts = ResourceController::FailableActionOptions.new
|
54
|
+
@opts.wants.js
|
55
|
+
@opts.failure.wants.js
|
56
|
+
@opts.before {}
|
57
|
+
|
58
|
+
@dup = @opts.dup
|
59
|
+
end
|
60
|
+
|
61
|
+
should "duplicate success" do
|
62
|
+
assert !@dup.success.equal?(@opts.success)
|
63
|
+
assert @dup.success.wants[:js]
|
64
|
+
end
|
65
|
+
|
66
|
+
should "duplicate failure" do
|
67
|
+
assert !@dup.failure.equal?(@opts.failure)
|
68
|
+
assert @dup.failure.wants[:js]
|
69
|
+
end
|
70
|
+
|
71
|
+
should "duplicate before" do
|
72
|
+
assert !@dup.before.equal?(@opts.before)
|
73
|
+
assert @dup.before
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|