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 | ... | ... |