Commit 7265a237786f45127244b93cb1ee55e9dd76ef3e
1 parent
808df810
Exists in
master
and in
29 other branches
Fixed creation of order to avoid crashing when price is not defined
(ActionItem2362)
Showing
3 changed files
with
17 additions
and
2 deletions
Show diff stats
plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb
| ... | ... | @@ -229,7 +229,8 @@ class ShoppingCartPluginProfileController < ProfileController |
| 229 | 229 | new_items = {} |
| 230 | 230 | items.each do |id, quantity| |
| 231 | 231 | product = Product.find(id) |
| 232 | - new_items[id] = {:quantity => quantity, :price => product.price, :name => product.name} | |
| 232 | + price = product.price || 0 | |
| 233 | + new_items[id] = {:quantity => quantity, :price => price, :name => product.name} | |
| 233 | 234 | end |
| 234 | 235 | ShoppingCartPlugin::PurchaseOrder.create!( |
| 235 | 236 | :seller => profile, | ... | ... |
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
| ... | ... | @@ -79,7 +79,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase |
| 79 | 79 | should 'group filtered orders products and quantities' do |
| 80 | 80 | p1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1, :name => 'p1') |
| 81 | 81 | p2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2, :name => 'p2') |
| 82 | - p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3, :name => 'p3') | |
| 82 | + p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3) | |
| 83 | 83 | po1_products = {p1.id => {:quantity => 1, :price => p1.price, :name => p1.name}, p2.id => {:quantity => 2, :price => p2.price, :name => p2.name }} |
| 84 | 84 | po2_products = {p2.id => {:quantity => 1, :price => p2.price, :name => p2.name }, p3.id => {:quantity => 2, :price => p3.price, :name => p3.name}} |
| 85 | 85 | po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | ... | ... |
plugins/shopping_cart/test/functional/shopping_cart_plugin_profile_controller_test.rb
| ... | ... | @@ -163,6 +163,20 @@ class ShoppingCartPluginProfileControllerTest < ActionController::TestCase |
| 163 | 163 | assert_equal ShoppingCartPlugin::PurchaseOrder::Status::OPENED, order.status |
| 164 | 164 | end |
| 165 | 165 | |
| 166 | + should 'register order on send request and not crash if product is not defined' do | |
| 167 | + product1 = fast_create(Product, :enterprise_id => enterprise.id) | |
| 168 | + @controller.stubs(:session).returns({:cart => {:items => {product1.id => 1}}}) | |
| 169 | + assert_difference ShoppingCartPlugin::PurchaseOrder, :count, 1 do | |
| 170 | + post :send_request, | |
| 171 | + :customer => {:name => "Manuel", :email => "manuel@ceu.com"}, | |
| 172 | + :profile => enterprise.identifier | |
| 173 | + end | |
| 174 | + | |
| 175 | + order = ShoppingCartPlugin::PurchaseOrder.last | |
| 176 | + | |
| 177 | + assert_equal 0, order.products_list[product1.id][:price] | |
| 178 | + end | |
| 179 | + | |
| 166 | 180 | private |
| 167 | 181 | |
| 168 | 182 | def json_response | ... | ... |