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 107 register_order(params[:customer], self.cart[:items])
108 108 begin
109 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 112 self.cart = nil
113 113 render :text => {
114 114 :ok => true,
... ... @@ -268,22 +268,22 @@ class ShoppingCartPluginController < PublicController
268 268 price = product.price || 0
269 269 new_items[id] = {:quantity => quantity, :price => price, :name => product.name}
270 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 287 end
288 288  
289 289 protected
... ...
plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb
... ... @@ -4,31 +4,37 @@ class ShoppingCartPlugin::Mailer < Noosfero::Plugin::MailerBase
4 4  
5 5 def customer_notification(customer, supplier, items, delivery_option)
6 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 21 end
19 22  
20 23 def supplier_notification(customer, supplier, items, delivery_option)
21 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 39 end
34 40 end
... ...
plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb
... ... @@ -5,6 +5,8 @@ class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord
5 5  
6 6 validates_presence_of :status, :seller
7 7  
  8 + attr_accessible :seller, :status, :products_list
  9 +
8 10 acts_as_having_settings :field => :data
9 11  
10 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 18  
19 19 should 'force cookie expiration with explicit path for an empty cart' do
20 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 22 end
23 23  
24 24 should 'add a new product to cart' do
... ... @@ -41,7 +41,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
41 41  
42 42 assert !product_in_cart?(product)
43 43 assert !response_ok?
44   - assert 3, reponse_error_code
  44 + assert_equal 3, reponse_error_code
45 45 end
46 46  
47 47 should 'remove cart if the product being removed is the last one' do
... ... @@ -98,10 +98,10 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
98 98  
99 99 should 'update the quantity of a product' do
100 100 get :add, :id => product.id
101   - assert 1, product_quantity(product)
  101 + assert_equal 1, product_quantity(product)
102 102  
103 103 get :update_quantity, :id => product.id, :quantity => 3
104   - assert 3, product_quantity(product)
  104 + assert_equal 3, product_quantity(product)
105 105 end
106 106  
107 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 153 product1 = fast_create(Product, :profile_id => enterprise.id, :price => 1.99)
154 154 product2 = fast_create(Product, :profile_id => enterprise.id, :price => 2.23)
155 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 157 post :send_request,
158 158 :customer => {:name => "Manuel", :email => "manuel@ceu.com"}
159 159 end
... ... @@ -170,7 +170,7 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase
170 170 should 'register order on send request and not crash if product is not defined' do
171 171 product1 = fast_create(Product, :profile_id => enterprise.id)
172 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 174 post :send_request,
175 175 :customer => {:name => "Manuel", :email => "manuel@ceu.com"}
176 176 end
... ...
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
... ... @@ -48,7 +48,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
48 48 price = 4.35
49 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 52 end
53 53  
54 54 should 'be able to choose delivery_options' do
... ...