resources_controller 1.0.2
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 +330 -0
- data/TODO +0 -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/controller.rb +69 -0
- data/lib/resource_controller/failable_action_options.rb +25 -0
- data/lib/resource_controller/helpers/current_objects.rb +82 -0
- data/lib/resource_controller/helpers/internal.rb +80 -0
- data/lib/resource_controller/helpers/nested.rb +82 -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 +34 -0
- data/lib/resource_controller/response_collector.rb +27 -0
- data/lib/resource_controller/singleton.rb +15 -0
- data/lib/resource_controller.rb +54 -0
- data/lib/urligence.rb +52 -0
- data/rails/init.rb +6 -0
- data/test/Gemfile +11 -0
- data/test/Rakefile +10 -0
- data/test/app/controllers/accounts_controller.rb +6 -0
- data/test/app/controllers/application_controller.rb +5 -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 +3 -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 +2 -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/application.rb +41 -0
- data/test/config/boot.rb +6 -0
- data/test/config/database.yml +9 -0
- data/test/config/environment.rb +5 -0
- data/test/config/environments/development.rb +19 -0
- data/test/config/environments/test.rb +32 -0
- data/test/config/initializers/inflections.rb +14 -0
- data/test/config/initializers/secret_token.rb +7 -0
- data/test/config/initializers/session_store.rb +8 -0
- data/test/config/routes.rb +35 -0
- data/test/config.ru +4 -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/rails +6 -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 +140 -0
- data/test/test/functional/cms/photos_controller_test.rb +37 -0
- data/test/test/functional/cms/products_controller_test.rb +37 -0
- data/test/test/functional/comments_controller_test.rb +140 -0
- data/test/test/functional/images_controller_test.rb +30 -0
- data/test/test/functional/people_controller_test.rb +147 -0
- data/test/test/functional/photos_controller_test.rb +199 -0
- data/test/test/functional/posts_controller_test.rb +21 -0
- data/test/test/functional/projects_controller_test.rb +137 -0
- data/test/test/functional/somethings_controller_test.rb +15 -0
- data/test/test/functional/tags_controller_test.rb +53 -0
- data/test/test/functional/users_controller_test.rb +137 -0
- data/test/test/test_helper.rb +14 -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 +205 -0
- data/test/vendor/plugins/d +1 -0
- data/test/vendor/plugins/dynamic_form/MIT-LICENSE +20 -0
- data/test/vendor/plugins/dynamic_form/README +13 -0
- data/test/vendor/plugins/dynamic_form/Rakefile +10 -0
- data/test/vendor/plugins/dynamic_form/init.rb +5 -0
- data/test/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +300 -0
- data/test/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +8 -0
- data/test/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +42 -0
- data/test/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +370 -0
- data/test/vendor/plugins/dynamic_form/test/test_helper.rb +9 -0
- metadata +403 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TagsControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@tag = Tag.find 1
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "with photo as parent" do
|
|
9
|
+
context "get to :index" do
|
|
10
|
+
setup do
|
|
11
|
+
get :index, :photo_id => 1
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should assign_to :products
|
|
15
|
+
should render_template "index"
|
|
16
|
+
should respond_with :success
|
|
17
|
+
|
|
18
|
+
should "respond with html" do
|
|
19
|
+
assert_equal 'text/html', @response.content_type
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "xhr to :index" do
|
|
24
|
+
setup do
|
|
25
|
+
xhr :get, :index, :photo_id => 1
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
should assign_to :products
|
|
29
|
+
should respond_with :success
|
|
30
|
+
|
|
31
|
+
should "respond with rjs" do
|
|
32
|
+
assert_equal 'text/javascript', @response.content_type
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context "post to create" do
|
|
37
|
+
setup do
|
|
38
|
+
post :create, :photo_id => 1, :tag => {:name => "Hello!"}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
should "add tag to photo" do
|
|
42
|
+
assert assigns(:photo).tags.include?(assigns(:tag)), "photo does not include new tag"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "without photo as parent" do
|
|
48
|
+
should "render text for a missing object" do
|
|
49
|
+
get :show, :id => 50000
|
|
50
|
+
assert @response.body.match(/not found/i), @response.body
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UsersControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@dude = accounts :one
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "on GET to index" do
|
|
9
|
+
setup do
|
|
10
|
+
get :index
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should assign_to(:dudes).with_kind_of(Array)
|
|
14
|
+
should respond_with :success
|
|
15
|
+
should render_with_layout
|
|
16
|
+
should render_template :index
|
|
17
|
+
should_not set_the_flash
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "on GET to :show" do
|
|
21
|
+
setup do
|
|
22
|
+
get :show, :id => 1
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
should assign_to(:dude)
|
|
26
|
+
should respond_with(:success)
|
|
27
|
+
should render_template(:show)
|
|
28
|
+
should_not set_the_flash
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context "on GET to :new" do
|
|
32
|
+
setup do
|
|
33
|
+
get :new
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
should assign_to(:dude).with_kind_of(Account)
|
|
37
|
+
should respond_with :success
|
|
38
|
+
should render_with_layout :application
|
|
39
|
+
should render_template :new
|
|
40
|
+
should_not set_the_flash
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context "on POST to :create" do
|
|
44
|
+
context "that succeeds" do
|
|
45
|
+
setup do
|
|
46
|
+
post :create, :dude => {:name => "My User"}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
should assign_to(:dude).with_kind_of(Account)
|
|
50
|
+
should redirect_to("dude page") { dude_url(assigns(:dude)) }
|
|
51
|
+
should set_the_flash.to "Successfully created!"
|
|
52
|
+
|
|
53
|
+
should "create the record" do
|
|
54
|
+
assert Account.find_by_name("My User")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "that fails" do
|
|
59
|
+
setup do
|
|
60
|
+
Account.any_instance.stubs(:save).returns(false)
|
|
61
|
+
post :create, :account => {}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
should assign_to(:dude).with_kind_of(Account)
|
|
65
|
+
should respond_with :success
|
|
66
|
+
should render_with_layout :application
|
|
67
|
+
should render_template :new
|
|
68
|
+
should_not set_the_flash
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
context "on GET to :edit" do
|
|
73
|
+
setup do
|
|
74
|
+
get :edit, :id => @dude.id
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
should assign_to(:dude).with(@dude)
|
|
78
|
+
should respond_with :success
|
|
79
|
+
should render_with_layout :application
|
|
80
|
+
should render_template :edit
|
|
81
|
+
should_not set_the_flash
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context "on PUT to :update" do
|
|
85
|
+
context "that succeeds" do
|
|
86
|
+
setup do
|
|
87
|
+
put :update, :id => @dude.id, :dude => {:name => 'My new user'}
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
should assign_to(:dude){ @dude }
|
|
91
|
+
should redirect_to("dude page") { dude_path(assigns(:dude)) }
|
|
92
|
+
should set_the_flash.to "Successfully updated!"
|
|
93
|
+
|
|
94
|
+
should "update the record" do
|
|
95
|
+
@dude.reload
|
|
96
|
+
assert_equal 'My new user', @dude.name
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context "that fails" do
|
|
101
|
+
setup do
|
|
102
|
+
Account.any_instance.stubs(:update_attributes).returns(false)
|
|
103
|
+
put :update, :id => @dude.id, :user => {:name => 'My new user'}
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
should assign_to(:object).with_kind_of(Account)
|
|
107
|
+
should assign_to(:dude).with_kind_of(Account)
|
|
108
|
+
should respond_with :success
|
|
109
|
+
should render_with_layout :application
|
|
110
|
+
should render_template :edit
|
|
111
|
+
should_not set_the_flash
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
context "on DELETE to :destroy" do
|
|
116
|
+
context "that succeeds" do
|
|
117
|
+
setup do
|
|
118
|
+
delete :destroy, :id => @dude.id
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
should assign_to(:dude){ @dude }
|
|
122
|
+
should redirect_to("dudes index"){ dudes_url }
|
|
123
|
+
should set_the_flash.to "Successfully removed!"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
context "that fails" do
|
|
127
|
+
setup do
|
|
128
|
+
Account.any_instance.stubs(:destroy).returns(false)
|
|
129
|
+
delete :destroy, :id => @dude.to_param
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
should respond_with(:redirect)
|
|
133
|
+
should redirect_to("dude url") { dude_url assigns(:dude) }
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
|
2
|
+
require File.expand_path('../../config/environment', __FILE__)
|
|
3
|
+
require 'rails/test_help'
|
|
4
|
+
require "shoulda"
|
|
5
|
+
|
|
6
|
+
class ActiveSupport::TestCase
|
|
7
|
+
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
|
8
|
+
#
|
|
9
|
+
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
|
10
|
+
# -- they do not yet inherit this setting
|
|
11
|
+
fixtures :all
|
|
12
|
+
|
|
13
|
+
# Add more helper methods to be used by all tests here...
|
|
14
|
+
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
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require File.dirname(__FILE__)+'/../../test_helper'
|
|
2
|
+
|
|
3
|
+
class ResourceController::Helpers::CurrentObjectsTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@controller = PostsController.new
|
|
6
|
+
|
|
7
|
+
@params = stub :[] => "1"
|
|
8
|
+
@controller.stubs(:params).returns(@params)
|
|
9
|
+
|
|
10
|
+
@request = stub :path => ""
|
|
11
|
+
@controller.stubs(:request).returns(@request)
|
|
12
|
+
|
|
13
|
+
@object = Post.new
|
|
14
|
+
Post.stubs(:find).with("1").returns(@object)
|
|
15
|
+
|
|
16
|
+
@collection = mock()
|
|
17
|
+
Post.stubs(:find).with(:all).returns(@collection)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "model helper" do
|
|
21
|
+
should "return constant" do
|
|
22
|
+
assert_equal Post, @controller.send(:model)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "collection helper" do
|
|
27
|
+
should "find all" do
|
|
28
|
+
assert_equal @collection, @controller.send(:collection)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "param helper" do
|
|
33
|
+
should "return the correct param" do
|
|
34
|
+
assert_equal "1", @controller.send(:param)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "object helper" do
|
|
39
|
+
should "find the correct object" do
|
|
40
|
+
assert_equal @object, @controller.send(:object)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context "load object helper" do
|
|
45
|
+
setup do
|
|
46
|
+
@controller.send(:load_object)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
should "load object as instance variable" do
|
|
50
|
+
assert_equal @object, @controller.instance_variable_get("@post")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context "with an alternate object_name" do
|
|
54
|
+
setup do
|
|
55
|
+
@controller.stubs(:object_name).returns('asdf')
|
|
56
|
+
@controller.send(:load_object)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
should "use the variable name" do
|
|
60
|
+
assert_equal @object, @controller.instance_variable_get("@asdf")
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "load_collection helper" do
|
|
66
|
+
context "with resource_name" do
|
|
67
|
+
setup do
|
|
68
|
+
@controller.send(:load_collection)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
should "load collection in to instance variable with plural model_name" do
|
|
72
|
+
assert_equal @collection, @controller.instance_variable_get("@posts")
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "object params helper" do
|
|
78
|
+
context "without alternate variable name" do
|
|
79
|
+
setup do
|
|
80
|
+
@params.expects(:[]).with("post").returns(2)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
should "get params for object" do
|
|
84
|
+
assert_equal 2, @controller.send(:object_params)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "with alternate object_name" do
|
|
89
|
+
setup do
|
|
90
|
+
@params.expects(:[]).with("something").returns(3)
|
|
91
|
+
@controller.expects(:object_name).returns("something")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
should "use variable name" do
|
|
95
|
+
assert_equal 3, @controller.send(:object_params)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context "build object helper" do
|
|
101
|
+
context "with no parents" do
|
|
102
|
+
setup do
|
|
103
|
+
Post.expects(:new).with("1").returns("a new post")
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
should "build new object" do
|
|
107
|
+
assert_equal "a new post", @controller.send(:build_object)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
context "with parent" do
|
|
112
|
+
setup do
|
|
113
|
+
@comments_controller = CommentsController.new
|
|
114
|
+
@comment_params = stub()
|
|
115
|
+
@comment_params.stubs(:[]).with(:post_id).returns 2
|
|
116
|
+
@comment_params.stubs(:[]).with('comment').returns ""
|
|
117
|
+
@comments_controller.stubs(:params).returns(@comment_params)
|
|
118
|
+
|
|
119
|
+
@request = stub :path => ""
|
|
120
|
+
@comments_controller.stubs(:request).returns(@request)
|
|
121
|
+
|
|
122
|
+
Post.expects(:find).with(2).returns(Post.new)
|
|
123
|
+
@comments = stub()
|
|
124
|
+
@comments.expects(:build).with("").returns("a new comment")
|
|
125
|
+
Post.any_instance.stubs(:comments).returns(@comments)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
should "build new object" do
|
|
129
|
+
assert_equal "a new comment", @comments_controller.send(:build_object)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|