Commit 80163119fa7ffe603b2d44235edd99fca1a66719

Authored by Rodrigo Souto
1 parent abde28a7

Fix shopping cart tests

plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb
@@ -107,8 +107,8 @@ class ShoppingCartPluginController < PublicController @@ -107,8 +107,8 @@ class ShoppingCartPluginController < PublicController
107 register_order(params[:customer], self.cart[:items]) 107 register_order(params[:customer], self.cart[:items])
108 begin 108 begin
109 enterprise = environment.enterprises.find(cart[:profile_id]) 109 enterprise = environment.enterprises.find(cart[:profile_id])
110 - ShoppingCartPlugin::Mailer.deliver_customer_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option])  
111 - ShoppingCartPlugin::Mailer.deliver_supplier_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]) 110 + ShoppingCartPlugin::Mailer.customer_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]).deliver
  111 + ShoppingCartPlugin::Mailer.supplier_notification(params[:customer], enterprise, self.cart[:items], params[:delivery_option]).deliver
112 self.cart = nil 112 self.cart = nil
113 render :text => { 113 render :text => {
114 :ok => true, 114 :ok => true,
@@ -268,22 +268,22 @@ class ShoppingCartPluginController < PublicController @@ -268,22 +268,22 @@ class ShoppingCartPluginController < PublicController
268 price = product.price || 0 268 price = product.price || 0
269 new_items[id] = {:quantity => quantity, :price => price, :name => product.name} 269 new_items[id] = {:quantity => quantity, :price => price, :name => product.name}
270 end 270 end
271 - ShoppingCartPlugin::PurchaseOrder.create!(  
272 - :seller => Enterprise.find(cart[:profile_id]),  
273 - :customer => user,  
274 - :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED,  
275 - :products_list => new_items,  
276 - :customer_delivery_option => params[:delivery_option],  
277 - :customer_payment => params[:customer][:payment],  
278 - :customer_change => params[:customer][:change],  
279 - :customer_name => params[:customer][:name],  
280 - :customer_email => params[:customer][:email],  
281 - :customer_contact_phone => params[:customer][:contact_phone],  
282 - :customer_address => params[:customer][:address],  
283 - :customer_district => params[:customer][:district],  
284 - :customer_city => params[:customer][:city],  
285 - :customer_zip_code => params[:customer][:zip_code]  
286 - ) 271 + purchase_order = ShoppingCartPlugin::PurchaseOrder.new
  272 + purchase_order.seller = Enterprise.find(cart[:profile_id])
  273 + purchase_order.customer = user
  274 + purchase_order.status = ShoppingCartPlugin::PurchaseOrder::Status::OPENED
  275 + purchase_order.products_list = new_items
  276 + purchase_order.customer_delivery_option = params[:delivery_option]
  277 + purchase_order.customer_payment = params[:customer][:payment]
  278 + purchase_order.customer_change = params[:customer][:change]
  279 + purchase_order.customer_name = params[:customer][:name]
  280 + purchase_order.customer_email = params[:customer][:email]
  281 + purchase_order.customer_contact_phone = params[:customer][:contact_phone]
  282 + purchase_order.customer_address = params[:customer][:address]
  283 + purchase_order.customer_district = params[:customer][:district]
  284 + purchase_order.customer_city = params[:customer][:city]
  285 + purchase_order.customer_zip_code = params[:customer][:zip_code]
  286 + purchase_order.save!
287 end 287 end
288 288
289 protected 289 protected
plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb
@@ -4,31 +4,37 @@ class ShoppingCartPlugin::Mailer < Noosfero::Plugin::MailerBase @@ -4,31 +4,37 @@ class ShoppingCartPlugin::Mailer < Noosfero::Plugin::MailerBase
4 4
5 def customer_notification(customer, supplier, items, delivery_option) 5 def customer_notification(customer, supplier, items, delivery_option)
6 domain = supplier.hostname || supplier.environment.default_hostname 6 domain = supplier.hostname || supplier.environment.default_hostname
7 - recipients customer[:email]  
8 - from 'no-reply@' + domain  
9 - reply_to supplier.contact_email  
10 - subject _("[%s] Your buy request was performed successfully.") % supplier[:name]  
11 - content_type 'text/html'  
12 - body :customer => customer,  
13 - :supplier => supplier,  
14 - :items => items,  
15 - :environment => supplier.environment,  
16 - :helper => self,  
17 - :delivery_option => delivery_option 7 + @customer = customer
  8 + @supplier = supplier
  9 + @items = items
  10 + @environment = supplier.environment
  11 + @helper = self
  12 + @delivery_option = delivery_option
  13 +
  14 + mail(
  15 + to: customer[:email],
  16 + from: 'no-reply@' + domain,
  17 + reply_to: supplier.contact_email,
  18 + subject: _("[%s] Your buy request was performed successfully.") % supplier[:name],
  19 + content_type: 'text/html'
  20 + )
18 end 21 end
19 22
20 def supplier_notification(customer, supplier, items, delivery_option) 23 def supplier_notification(customer, supplier, items, delivery_option)
21 domain = supplier.environment.default_hostname 24 domain = supplier.environment.default_hostname
22 - recipients supplier.contact_email  
23 - from 'no-reply@' + domain  
24 - reply_to customer[:email]  
25 - subject _("[%s] You have a new buy request from %s.") % [supplier.environment.name, customer[:name]]  
26 - content_type 'text/html'  
27 - body :customer => customer,  
28 - :supplier => supplier,  
29 - :items => items,  
30 - :environment => supplier.environment,  
31 - :helper => self,  
32 - :delivery_option => delivery_option 25 + @customer = customer
  26 + @supplier = supplier
  27 + @items = items
  28 + @environment = supplier.environment
  29 + @helper = self
  30 + @delivery_option = delivery_option
  31 +
  32 + mail(
  33 + to: supplier.contact_email,
  34 + from: 'no-reply@' + domain,
  35 + reply_to: customer[:email],
  36 + subject: _("[%s] You have a new buy request from %s.") % [supplier.environment.name, customer[:name]],
  37 + content_type: 'text/html'
  38 + )
33 end 39 end
34 end 40 end
plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb
@@ -5,6 +5,8 @@ class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord @@ -5,6 +5,8 @@ class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord
5 5
6 validates_presence_of :status, :seller 6 validates_presence_of :status, :seller
7 7
  8 + attr_accessible :seller, :status, :products_list
  9 +
8 acts_as_having_settings :field => :data 10 acts_as_having_settings :field => :data
9 11
10 settings_items :products_list, :type => Array, :default => {} 12 settings_items :products_list, :type => Array, :default => {}
plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb
@@ -18,7 +18,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase @@ -18,7 +18,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
18 18
19 should 'force cookie expiration with explicit path for an empty cart' do 19 should 'force cookie expiration with explicit path for an empty cart' do
20 get :get 20 get :get
21 - assert @response.headers['Set-Cookie'].any? { |c| c =~ /_noosfero_plugin_shopping_cart=; path=\/plugin\/shopping_cart; expires=.*-1970/} 21 + assert @response.headers['Set-Cookie'] =~ /_noosfero_plugin_shopping_cart=; path=\/plugin\/shopping_cart; expires=.*-1970/
22 end 22 end
23 23
24 should 'add a new product to cart' do 24 should 'add a new product to cart' do
@@ -41,7 +41,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase @@ -41,7 +41,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
41 41
42 assert !product_in_cart?(product) 42 assert !product_in_cart?(product)
43 assert !response_ok? 43 assert !response_ok?
44 - assert 3, reponse_error_code 44 + assert_equal 3, reponse_error_code
45 end 45 end
46 46
47 should 'remove cart if the product being removed is the last one' do 47 should 'remove cart if the product being removed is the last one' do
@@ -98,10 +98,10 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase @@ -98,10 +98,10 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
98 98
99 should 'update the quantity of a product' do 99 should 'update the quantity of a product' do
100 get :add, :id => product.id 100 get :add, :id => product.id
101 - assert 1, product_quantity(product) 101 + assert_equal 1, product_quantity(product)
102 102
103 get :update_quantity, :id => product.id, :quantity => 3 103 get :update_quantity, :id => product.id, :quantity => 3
104 - assert 3, product_quantity(product) 104 + assert_equal 3, product_quantity(product)
105 end 105 end
106 106
107 should 'not try to update quantity the quantity of a product if there is no cart' do 107 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 @@ -153,7 +153,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
153 product1 = fast_create(Product, :profile_id => enterprise.id, :price => 1.99) 153 product1 = fast_create(Product, :profile_id => enterprise.id, :price => 1.99)
154 product2 = fast_create(Product, :profile_id => enterprise.id, :price => 2.23) 154 product2 = fast_create(Product, :profile_id => enterprise.id, :price => 2.23)
155 @controller.stubs(:cart).returns({ :profile_id => enterprise.id, :items => {product1.id => 1, product2.id => 2}}) 155 @controller.stubs(:cart).returns({ :profile_id => enterprise.id, :items => {product1.id => 1, product2.id => 2}})
156 - assert_difference ShoppingCartPlugin::PurchaseOrder, :count, 1 do 156 + assert_difference 'ShoppingCartPlugin::PurchaseOrder.count', 1 do
157 post :send_request, 157 post :send_request,
158 :customer => {:name => "Manuel", :email => "manuel@ceu.com"} 158 :customer => {:name => "Manuel", :email => "manuel@ceu.com"}
159 end 159 end
@@ -170,7 +170,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase @@ -170,7 +170,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
170 should 'register order on send request and not crash if product is not defined' do 170 should 'register order on send request and not crash if product is not defined' do
171 product1 = fast_create(Product, :profile_id => enterprise.id) 171 product1 = fast_create(Product, :profile_id => enterprise.id)
172 @controller.stubs(:cart).returns({ :profile_id => enterprise.id, :items => {product1.id => 1}}) 172 @controller.stubs(:cart).returns({ :profile_id => enterprise.id, :items => {product1.id => 1}})
173 - assert_difference ShoppingCartPlugin::PurchaseOrder, :count, 1 do 173 + assert_difference 'ShoppingCartPlugin::PurchaseOrder.count', 1 do
174 post :send_request, 174 post :send_request,
175 :customer => {:name => "Manuel", :email => "manuel@ceu.com"} 175 :customer => {:name => "Manuel", :email => "manuel@ceu.com"}
176 end 176 end
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
@@ -48,7 +48,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase @@ -48,7 +48,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
48 price = 4.35 48 price = 4.35
49 post :edit, :profile => enterprise.identifier, :settings => {:delivery_price => price} 49 post :edit, :profile => enterprise.identifier, :settings => {:delivery_price => price}
50 50
51 - assert settings.delivery_price == price 51 + assert settings.delivery_price == price.to_s
52 end 52 end
53 53
54 should 'be able to choose delivery_options' do 54 should 'be able to choose delivery_options' do