diff --git a/plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb b/plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb index 2c62084..d8e4e2a 100644 --- a/plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb +++ b/plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb @@ -107,8 +107,8 @@ class ShoppingCartPluginController < PublicController register_order(params[:customer], self.cart[:items]) begin enterprise = environment.enterprises.find(cart[:profile_id]) - ShoppingCartPlugin::Mailer.deliver_customer_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]) - ShoppingCartPlugin::Mailer.deliver_supplier_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]) + ShoppingCartPlugin::Mailer.customer_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]).deliver + ShoppingCartPlugin::Mailer.supplier_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]).deliver self.cart = nil render :text => { :ok => true, @@ -268,22 +268,22 @@ class ShoppingCartPluginController < PublicController price = product.price || 0 new_items[id] = {:quantity => quantity, :price => price, :name => product.name} end - ShoppingCartPlugin::PurchaseOrder.create!( - :seller => Enterprise.find(cart[:profile_id]), - :customer => user, - :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED, - :products_list => new_items, - :customer_delivery_option => params[:delivery_option], - :customer_payment => params[:customer][:payment], - :customer_change => params[:customer][:change], - :customer_name => params[:customer][:name], - :customer_email => params[:customer][:email], - :customer_contact_phone => params[:customer][:contact_phone], - :customer_address => params[:customer][:address], - :customer_district => params[:customer][:district], - :customer_city => params[:customer][:city], - :customer_zip_code => params[:customer][:zip_code] - ) + purchase_order = ShoppingCartPlugin::PurchaseOrder.new + purchase_order.seller = Enterprise.find(cart[:profile_id]) + purchase_order.customer = user + purchase_order.status = ShoppingCartPlugin::PurchaseOrder::Status::OPENED + purchase_order.products_list = new_items + purchase_order.customer_delivery_option = params[:delivery_option] + purchase_order.customer_payment = params[:customer][:payment] + purchase_order.customer_change = params[:customer][:change] + purchase_order.customer_name = params[:customer][:name] + purchase_order.customer_email = params[:customer][:email] + purchase_order.customer_contact_phone = params[:customer][:contact_phone] + purchase_order.customer_address = params[:customer][:address] + purchase_order.customer_district = params[:customer][:district] + purchase_order.customer_city = params[:customer][:city] + purchase_order.customer_zip_code = params[:customer][:zip_code] + purchase_order.save! end protected diff --git a/plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb b/plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb index 7f55a87..a37e38b 100644 --- a/plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb +++ b/plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb @@ -4,31 +4,37 @@ class ShoppingCartPlugin::Mailer < Noosfero::Plugin::MailerBase def customer_notification(customer, supplier, items, delivery_option) domain = supplier.hostname || supplier.environment.default_hostname - recipients customer[:email] - from 'no-reply@' + domain - reply_to supplier.contact_email - subject _("[%s] Your buy request was performed successfully.") % supplier[:name] - content_type 'text/html' - body :customer => customer, - :supplier => supplier, - :items => items, - :environment => supplier.environment, - :helper => self, - :delivery_option => delivery_option + @customer = customer + @supplier = supplier + @items = items + @environment = supplier.environment + @helper = self + @delivery_option = delivery_option + + mail( + to: customer[:email], + from: 'no-reply@' + domain, + reply_to: supplier.contact_email, + subject: _("[%s] Your buy request was performed successfully.") % supplier[:name], + content_type: 'text/html' + ) end def supplier_notification(customer, supplier, items, delivery_option) domain = supplier.environment.default_hostname - recipients supplier.contact_email - from 'no-reply@' + domain - reply_to customer[:email] - subject _("[%s] You have a new buy request from %s.") % [supplier.environment.name, customer[:name]] - content_type 'text/html' - body :customer => customer, - :supplier => supplier, - :items => items, - :environment => supplier.environment, - :helper => self, - :delivery_option => delivery_option + @customer = customer + @supplier = supplier + @items = items + @environment = supplier.environment + @helper = self + @delivery_option = delivery_option + + mail( + to: supplier.contact_email, + from: 'no-reply@' + domain, + reply_to: customer[:email], + subject: _("[%s] You have a new buy request from %s.") % [supplier.environment.name, customer[:name]], + content_type: 'text/html' + ) end end diff --git a/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb b/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb index ab05bd9..e201b74 100644 --- a/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb +++ b/plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb @@ -5,6 +5,8 @@ class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord validates_presence_of :status, :seller + attr_accessible :seller, :status, :products_list + acts_as_having_settings :field => :data settings_items :products_list, :type => Array, :default => {} diff --git a/plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb b/plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb index 2455230..443ed1f 100644 --- a/plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb +++ b/plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb @@ -18,7 +18,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase should 'force cookie expiration with explicit path for an empty cart' do get :get - assert @response.headers['Set-Cookie'].any? { |c| c =~ /_noosfero_plugin_shopping_cart=; path=\/plugin\/shopping_cart; expires=.*-1970/} + assert @response.headers['Set-Cookie'] =~ /_noosfero_plugin_shopping_cart=; path=\/plugin\/shopping_cart; expires=.*-1970/ end should 'add a new product to cart' do @@ -41,7 +41,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase assert !product_in_cart?(product) assert !response_ok? - assert 3, reponse_error_code + assert_equal 3, reponse_error_code end should 'remove cart if the product being removed is the last one' do @@ -98,10 +98,10 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase should 'update the quantity of a product' do get :add, :id => product.id - assert 1, product_quantity(product) + assert_equal 1, product_quantity(product) get :update_quantity, :id => product.id, :quantity => 3 - assert 3, product_quantity(product) + assert_equal 3, product_quantity(product) end should 'not try to update quantity the quantity of a product if there is no cart' do @@ -153,7 +153,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase product1 = fast_create(Product, :profile_id => enterprise.id, :price => 1.99) product2 = fast_create(Product, :profile_id => enterprise.id, :price => 2.23) @controller.stubs(:cart).returns({ :profile_id => enterprise.id, :items => {product1.id => 1, product2.id => 2}}) - assert_difference ShoppingCartPlugin::PurchaseOrder, :count, 1 do + assert_difference 'ShoppingCartPlugin::PurchaseOrder.count', 1 do post :send_request, :customer => {:name => "Manuel", :email => "manuel@ceu.com"} end @@ -170,7 +170,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase should 'register order on send request and not crash if product is not defined' do product1 = fast_create(Product, :profile_id => enterprise.id) @controller.stubs(:cart).returns({ :profile_id => enterprise.id, :items => {product1.id => 1}}) - assert_difference ShoppingCartPlugin::PurchaseOrder, :count, 1 do + assert_difference 'ShoppingCartPlugin::PurchaseOrder.count', 1 do post :send_request, :customer => {:name => "Manuel", :email => "manuel@ceu.com"} end 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 f91c071..cd58450 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 @@ -48,7 +48,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase price = 4.35 post :edit, :profile => enterprise.identifier, :settings => {:delivery_price => price} - assert settings.delivery_price == price + assert settings.delivery_price == price.to_s end should 'be able to choose delivery_options' do -- libgit2 0.21.2