diff --git a/plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb b/plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb index ffb3ebd..b465465 100644 --- a/plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb +++ b/plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb @@ -229,7 +229,8 @@ class ShoppingCartPluginProfileController < ProfileController new_items = {} items.each do |id, quantity| product = Product.find(id) - new_items[id] = {:quantity => quantity, :price => product.price, :name => product.name} + price = product.price || 0 + new_items[id] = {:quantity => quantity, :price => price, :name => product.name} end ShoppingCartPlugin::PurchaseOrder.create!( :seller => profile, diff --git a/plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb b/plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb index f2ed746..5a29613 100644 --- a/plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb +++ b/plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb @@ -79,7 +79,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase should 'group filtered orders products and quantities' do p1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1, :name => 'p1') p2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2, :name => 'p2') - p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3, :name => 'p3') + p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3) po1_products = {p1.id => {:quantity => 1, :price => p1.price, :name => p1.name}, p2.id => {:quantity => 2, :price => p2.price, :name => p2.name }} po2_products = {p2.id => {:quantity => 1, :price => p2.price, :name => p2.name }, p3.id => {:quantity => 2, :price => p3.price, :name => p3.name}} po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) diff --git a/plugins/shopping_cart/test/functional/shopping_cart_plugin_profile_controller_test.rb b/plugins/shopping_cart/test/functional/shopping_cart_plugin_profile_controller_test.rb index 362576f..8f19397 100644 --- a/plugins/shopping_cart/test/functional/shopping_cart_plugin_profile_controller_test.rb +++ b/plugins/shopping_cart/test/functional/shopping_cart_plugin_profile_controller_test.rb @@ -163,6 +163,20 @@ class ShoppingCartPluginProfileControllerTest < ActionController::TestCase assert_equal ShoppingCartPlugin::PurchaseOrder::Status::OPENED, order.status end + should 'register order on send request and not crash if product is not defined' do + product1 = fast_create(Product, :enterprise_id => enterprise.id) + @controller.stubs(:session).returns({:cart => {:items => {product1.id => 1}}}) + assert_difference ShoppingCartPlugin::PurchaseOrder, :count, 1 do + post :send_request, + :customer => {:name => "Manuel", :email => "manuel@ceu.com"}, + :profile => enterprise.identifier + end + + order = ShoppingCartPlugin::PurchaseOrder.last + + assert_equal 0, order.products_list[product1.id][:price] + end + private def json_response -- libgit2 0.21.2