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 2050fe4..118468e 100644 --- a/plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb +++ b/plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb @@ -89,6 +89,7 @@ class ShoppingCartPluginProfileController < ProfileController end def send_request + register_order(params[:customer], session[:cart][:items]) begin ShoppingCartPlugin::Mailer.deliver_customer_notification(params[:customer], profile, session[:cart][:items]) ShoppingCartPlugin::Mailer.deliver_supplier_notification(params[:customer], profile, session[:cart][:items]) @@ -223,4 +224,22 @@ class ShoppingCartPluginProfileController < ProfileController end true end + + def register_order(custumer, items) + items.each do |id, quantity| + items[id] = {:quantity => quantity, :price => Product.find(id).price} + end + ShoppingCartPlugin::PurchaseOrder.create!( + :seller => profile, + :customer => user, + :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED, + :products_list => items, + :customer_name => params[:customer][:name], + :customer_email => params[:customer][:email], + :customer_contact_phone => params[:customer][:contact_phone], + :customer_address => params[:customer][:address], + :customer_city => params[:customer][:city], + :customer_zip_code => params[:customer][:zip_code] + ) + end end 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 ad1bb4e..ae6497c 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 @@ -144,6 +144,25 @@ class ShoppingCartPluginProfileControllerTest < Test::Unit::TestCase assert_nothing_raised { get :clean, :profile => enterprise.identifier } end + should 'register order on send request' do + product1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1.99) + product2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2.23) + @controller.stubs(:session).returns({:cart => {:items => {product1.id => 1, product2.id => 2}}}) + 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 1.99, order.products_list[product1.id][:price] + assert_equal 1, order.products_list[product1.id][:quantity] + assert_equal 2.23, order.products_list[product2.id][:price] + assert_equal 2, order.products_list[product2.id][:quantity] + assert_equal ShoppingCartPlugin::PurchaseOrder::Status::OPENED, order.status + end + private def json_response -- libgit2 0.21.2