makandra_resource_controller 0.7.0
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 +343 -0
- data/TODO +0 -0
- data/VERSION.yml +5 -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.rb +37 -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 +25 -0
- data/lib/resource_controller/controller.rb +69 -0
- data/lib/resource_controller/failable_action_options.rb +25 -0
- data/lib/resource_controller/helpers.rb +34 -0
- data/lib/resource_controller/helpers/current_objects.rb +73 -0
- data/lib/resource_controller/helpers/internal.rb +80 -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/response_collector.rb +27 -0
- data/lib/resource_controller/singleton.rb +15 -0
- data/lib/urligence.rb +52 -0
- data/rails/init.rb +6 -0
- data/test/Gemfile +13 -0
- data/test/Gemfile.lock +95 -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.ru +4 -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 +34 -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/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 +79 -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 +427 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Cms::OptionsControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@product = products :one
|
|
6
|
+
@option = options :one
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "on GET to :index" do
|
|
10
|
+
setup do
|
|
11
|
+
get :index, :product_id => 1
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should assign_to(:options).with_kind_of(Array)
|
|
15
|
+
should assign_to(:product).with_kind_of(Product)
|
|
16
|
+
should respond_with :success
|
|
17
|
+
should render_with_layout
|
|
18
|
+
should render_template :index
|
|
19
|
+
should_not set_the_flash
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "on GET to :show" do
|
|
23
|
+
setup do
|
|
24
|
+
get :show, :id => 1, :product_id => 1
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should assign_to(:option).with_kind_of(Option)
|
|
28
|
+
should assign_to(:product).with_kind_of(Product)
|
|
29
|
+
should respond_with(:success)
|
|
30
|
+
should render_template(:show)
|
|
31
|
+
should_not set_the_flash
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "on GET to :new" do
|
|
35
|
+
setup do
|
|
36
|
+
get :new, :product_id => 1
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
should assign_to(:option).with_kind_of(Option)
|
|
40
|
+
should assign_to(:product).with_kind_of(Product)
|
|
41
|
+
should respond_with :success
|
|
42
|
+
should render_with_layout :application
|
|
43
|
+
should render_template :new
|
|
44
|
+
should_not set_the_flash
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "on POST to :create" do
|
|
48
|
+
context "that succeeds" do
|
|
49
|
+
setup do
|
|
50
|
+
post :create, :product_id => @product.id, :option => {:title => "My option"}, :product_id => 1
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
should assign_to(:option).with_kind_of(Option)
|
|
54
|
+
should redirect_to("product options index") { cms_product_option_url(@product, assigns(:option)) }
|
|
55
|
+
should set_the_flash.to "Successfully created!"
|
|
56
|
+
|
|
57
|
+
should "create the record" do
|
|
58
|
+
assert Option.find_by_title("My option")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context "that fails" do
|
|
63
|
+
setup do
|
|
64
|
+
Option.any_instance.stubs(:save).returns(false)
|
|
65
|
+
post :create, :product_id => @product.id, :option => {}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
should assign_to(:option).with_kind_of(Option)
|
|
69
|
+
should respond_with :success
|
|
70
|
+
should render_with_layout :application
|
|
71
|
+
should render_template :new
|
|
72
|
+
should_not set_the_flash
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context "on GET to :edit" do
|
|
77
|
+
setup do
|
|
78
|
+
get :edit, :product_id => @product.id, :id => @option.id
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
should assign_to(:option).with(@option)
|
|
82
|
+
should respond_with :success
|
|
83
|
+
should render_with_layout :application
|
|
84
|
+
should render_template :edit
|
|
85
|
+
should_not set_the_flash
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "on PUT to :update" do
|
|
89
|
+
context "that succeeds" do
|
|
90
|
+
setup do
|
|
91
|
+
put :update, :product_id => @product.id, :id => @option.id, :option => {:title => 'My new option'}
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
should assign_to(:option){ @option }
|
|
95
|
+
should redirect_to("option page") { cms_product_option_path(assigns(:option)) }
|
|
96
|
+
should set_the_flash.to "Successfully updated!"
|
|
97
|
+
|
|
98
|
+
should "update the record" do
|
|
99
|
+
@option.reload
|
|
100
|
+
assert_equal 'My new option', @option.title
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "that fails" do
|
|
105
|
+
setup do
|
|
106
|
+
Option.any_instance.stubs(:update_attributes).returns(false)
|
|
107
|
+
put :update, :product_id => @product.id, :id => @option.id, :option => {:title => 'My new option'}
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
should assign_to(:object).with_kind_of(Option)
|
|
111
|
+
should assign_to(:option).with_kind_of(Option)
|
|
112
|
+
should respond_with :success
|
|
113
|
+
should render_with_layout :application
|
|
114
|
+
should render_template :edit
|
|
115
|
+
should_not set_the_flash
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
context "on DELETE to :destroy" do
|
|
120
|
+
context "that succeeds" do
|
|
121
|
+
setup do
|
|
122
|
+
delete :destroy, :product_id => @product.id, :id => @option.id
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
should assign_to(:option){ @option }
|
|
126
|
+
should redirect_to("options index"){ cms_product_options_url }
|
|
127
|
+
should set_the_flash.to "Successfully removed!"
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
context "that fails" do
|
|
131
|
+
setup do
|
|
132
|
+
Option.any_instance.stubs(:destroy).returns(false)
|
|
133
|
+
delete :destroy, :product_id => @product.id, :id => @option.to_param
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
should respond_with(:redirect)
|
|
137
|
+
should redirect_to("option url") { cms_product_option_url @option }
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Cms::PhotosControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@person = personnel :one
|
|
6
|
+
@photo = photos :one
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "with personnel as parent" do
|
|
10
|
+
context "on get to :index" do
|
|
11
|
+
setup do
|
|
12
|
+
get :index, :personnel_id => 1
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
should respond_with :success
|
|
16
|
+
should render_template "index"
|
|
17
|
+
should assign_to :photos
|
|
18
|
+
should assign_to :personnel
|
|
19
|
+
should "scope photos to personnel" do
|
|
20
|
+
assert assigns(:photos).all? { |photo| photo.personnel.id == 1 }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context "on post to :create" do
|
|
25
|
+
setup do
|
|
26
|
+
post :create, :personnel_id => 1, :photo => {}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should redirect_to('cms_personnel_photo_path') { cms_personnel_photo_path(@person, assigns(:photo)) }
|
|
30
|
+
should assign_to :photo
|
|
31
|
+
should assign_to :personnel
|
|
32
|
+
should "scope photo to personel" do
|
|
33
|
+
assert personnel(:one), assigns(:photo).personnel
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class Cms::ProductsControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@product = products :one
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "on POST to :create" do
|
|
9
|
+
context "that succeeds" do
|
|
10
|
+
setup do
|
|
11
|
+
post :create, :product => {:name => "My Product"}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should assign_to(:product).with_kind_of(Product)
|
|
15
|
+
should redirect_to("products page") { cms_product_url(assigns(:product)) }
|
|
16
|
+
should set_the_flash.to "something"
|
|
17
|
+
|
|
18
|
+
should "create the record" do
|
|
19
|
+
assert Product.find_by_name("My Product")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "that fails" do
|
|
24
|
+
setup do
|
|
25
|
+
Product.any_instance.stubs(:save).returns(false)
|
|
26
|
+
post :create, :product => {}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should assign_to(:product).with_kind_of(Product)
|
|
30
|
+
should respond_with :success
|
|
31
|
+
should render_with_layout :application
|
|
32
|
+
should render_template :new
|
|
33
|
+
should_not set_the_flash
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CommentsControllerTest < ActionController::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@post = posts :one
|
|
6
|
+
@comment = Comment.find 1
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "on GET to :index" do
|
|
10
|
+
setup do
|
|
11
|
+
get :index, :post_id => 1
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should assign_to(:comments).with_kind_of(Array)
|
|
15
|
+
should assign_to(:post).with_kind_of(Post)
|
|
16
|
+
should respond_with :success
|
|
17
|
+
should render_with_layout
|
|
18
|
+
should render_template :index
|
|
19
|
+
should_not set_the_flash
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "on GET to :show" do
|
|
23
|
+
setup do
|
|
24
|
+
get :show, :id => 1, :post_id => 1
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should assign_to(:comment).with_kind_of(Comment)
|
|
28
|
+
should assign_to(:post).with_kind_of(Post)
|
|
29
|
+
should respond_with(:success)
|
|
30
|
+
should render_template(:show)
|
|
31
|
+
should_not set_the_flash
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "on GET to :new" do
|
|
35
|
+
setup do
|
|
36
|
+
get :new, :post_id => 1
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
should assign_to(:comment).with_kind_of(Comment)
|
|
40
|
+
should assign_to(:post).with_kind_of(Post)
|
|
41
|
+
should respond_with :success
|
|
42
|
+
should render_with_layout :comments
|
|
43
|
+
should render_template :new
|
|
44
|
+
should_not set_the_flash
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "on POST to :create" do
|
|
48
|
+
context "that succeeds" do
|
|
49
|
+
setup do
|
|
50
|
+
post :create, :comment => {:body => "My comment", :author => "Somebody"}, :post_id => 1
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
should assign_to(:comment).with_kind_of(Comment)
|
|
54
|
+
should redirect_to("post comments index") { post_comment_url(@post, assigns(:comment)) }
|
|
55
|
+
should set_the_flash.to "Successfully created!"
|
|
56
|
+
|
|
57
|
+
should "create the record" do
|
|
58
|
+
assert Comment.find_by_body("My comment")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context "that fails" do
|
|
63
|
+
setup do
|
|
64
|
+
Comment.any_instance.stubs(:save).returns(false)
|
|
65
|
+
post :create, :comment => {}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
should assign_to(:comment).with_kind_of(Comment)
|
|
69
|
+
should respond_with :success
|
|
70
|
+
should render_with_layout :comments
|
|
71
|
+
should render_template :new
|
|
72
|
+
should_not set_the_flash
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context "on GET to :edit" do
|
|
77
|
+
setup do
|
|
78
|
+
get :edit, :id => @comment.id
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
should assign_to(:comment).with(@comment)
|
|
82
|
+
should respond_with :success
|
|
83
|
+
should render_with_layout :comments
|
|
84
|
+
should render_template :edit
|
|
85
|
+
should_not set_the_flash
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "on PUT to :update" do
|
|
89
|
+
context "that succeeds" do
|
|
90
|
+
setup do
|
|
91
|
+
put :update, :id => @comment.id, :comment => {:body => 'My new comment'}
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
should assign_to(:comment){ @comment }
|
|
95
|
+
should redirect_to("comment page") { comment_path(assigns(:comment)) }
|
|
96
|
+
should set_the_flash.to "Successfully updated!"
|
|
97
|
+
|
|
98
|
+
should "update the record" do
|
|
99
|
+
@comment.reload
|
|
100
|
+
assert_equal 'My new comment', @comment.body
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "that fails" do
|
|
105
|
+
setup do
|
|
106
|
+
Comment.any_instance.stubs(:update_attributes).returns(false)
|
|
107
|
+
put :update, :id => @comment.id, :comment => {:body => 'My new comment'}
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
should assign_to(:object).with_kind_of(Comment)
|
|
111
|
+
should assign_to(:comment).with_kind_of(Comment)
|
|
112
|
+
should respond_with :success
|
|
113
|
+
should render_with_layout :comments
|
|
114
|
+
should render_template :edit
|
|
115
|
+
should_not set_the_flash
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
context "on DELETE to :destroy" do
|
|
120
|
+
context "that succeeds" do
|
|
121
|
+
setup do
|
|
122
|
+
delete :destroy, :id => @comment.id
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
should assign_to(:comment){ @comment }
|
|
126
|
+
should redirect_to("comments index"){ comments_path }
|
|
127
|
+
should set_the_flash.to "Successfully removed!"
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
context "that fails" do
|
|
131
|
+
setup do
|
|
132
|
+
Comment.any_instance.stubs(:destroy).returns(false)
|
|
133
|
+
delete :destroy, :id => @comment.to_param
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
should respond_with(:redirect)
|
|
137
|
+
should redirect_to("comment url") { comment_url @comment }
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|