Commit b2e59b620688129c3a6649c34816221be8f04896

Authored by Braulio Bhavamitra
1 parent ddf8ec9d

shopping_cart: fix tests

plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb
@@ -8,39 +8,39 @@ class ShoppingCartPluginController < OrdersPluginController @@ -8,39 +8,39 @@ class ShoppingCartPluginController < OrdersPluginController
8 def get 8 def get
9 config = 9 config =
10 if cart.nil? 10 if cart.nil?
11 - { :profile_id => params[:profile_id],  
12 - :has_products => false,  
13 - :visible => false,  
14 - :products => []} 11 + { profile_id: params[:profile_id],
  12 + has_products: false,
  13 + visible: false,
  14 + products: []}
15 else 15 else
16 { 16 {
17 - :profile_id => cart[:profile_id],  
18 - :profile_short_name => cart_profile.short_name,  
19 - :has_products => (cart[:items].keys.size > 0),  
20 - :visible => visible?,  
21 - :products => products, 17 + profile_id: cart[:profile_id],
  18 + profile_short_name: cart_profile.short_name,
  19 + has_products: (cart[:items].keys.size > 0),
  20 + visible: visible?,
  21 + products: products,
22 } 22 }
23 end 23 end
24 config[:has_previous_orders] = if cart_profile then previous_orders.first.present? else false end 24 config[:has_previous_orders] = if cart_profile then previous_orders.first.present? else false end
25 - render :text => config.to_json 25 + render text: config.to_json
26 end 26 end
27 27
28 def add 28 def add
29 product = find_product(params[:id]) 29 product = find_product(params[:id])
30 if product && (profile = validate_same_profile(product)) 30 if product && (profile = validate_same_profile(product))
31 - self.cart = { :profile_id => profile.id, :items => {} } if self.cart.nil? 31 + self.cart = { profile_id: profile.id, items: {} } if self.cart.nil?
32 self.cart[:items][product.id] = 0 if self.cart[:items][product.id].nil? 32 self.cart[:items][product.id] = 0 if self.cart[:items][product.id].nil?
33 self.cart[:items][product.id] += 1 33 self.cart[:items][product.id] += 1
34 - render :text => {  
35 - :ok => true,  
36 - :error => {:code => 0},  
37 - :products => [{  
38 - :id => product.id,  
39 - :name => product.name,  
40 - :price => get_price(product, profile.environment),  
41 - :description => product.description,  
42 - :picture => product.default_image(:minor),  
43 - :quantity => self.cart[:items][product.id] 34 + render text: {
  35 + ok: true,
  36 + error: {code: 0},
  37 + products: [{
  38 + id: product.id,
  39 + name: product.name,
  40 + price: get_price(product, profile.environment),
  41 + description: product.description,
  42 + picture: product.default_image(:minor),
  43 + quantity: self.cart[:items][product.id]
44 }] 44 }]
45 }.to_json 45 }.to_json
46 end 46 end
@@ -51,20 +51,20 @@ class ShoppingCartPluginController < OrdersPluginController @@ -51,20 +51,20 @@ class ShoppingCartPluginController < OrdersPluginController
51 if validate_cart_presence && validate_cart_has_product(id) 51 if validate_cart_presence && validate_cart_has_product(id)
52 self.cart[:items].delete(id) 52 self.cart[:items].delete(id)
53 self.cart = nil if self.cart[:items].empty? 53 self.cart = nil if self.cart[:items].empty?
54 - render :text => {  
55 - :ok => true,  
56 - :error => {:code => 0},  
57 - :product_id => id 54 + render text: {
  55 + ok: true,
  56 + error: {code: 0},
  57 + product_id: id
58 }.to_json 58 }.to_json
59 end 59 end
60 end 60 end
61 61
62 def list 62 def list
63 if validate_cart_presence 63 if validate_cart_presence
64 - render :text => {  
65 - :ok => true,  
66 - :error => {:code => 0},  
67 - :products => products 64 + render text: {
  65 + ok: true,
  66 + error: {code: 0},
  67 + products: products
68 }.to_json 68 }.to_json
69 end 69 end
70 end 70 end
@@ -75,20 +75,20 @@ class ShoppingCartPluginController < OrdersPluginController @@ -75,20 +75,20 @@ class ShoppingCartPluginController < OrdersPluginController
75 if validate_cart_presence && validate_cart_has_product(id) && validate_item_quantity(quantity) 75 if validate_cart_presence && validate_cart_has_product(id) && validate_item_quantity(quantity)
76 product = Product.find(id) 76 product = Product.find(id)
77 self.cart[:items][product.id] = quantity 77 self.cart[:items][product.id] = quantity
78 - render :text => {  
79 - :ok => true,  
80 - :error => {:code => 0},  
81 - :product_id => id,  
82 - :quantity => quantity 78 + render text: {
  79 + ok: true,
  80 + error: {code: 0},
  81 + product_id: id,
  82 + quantity: quantity
83 }.to_json 83 }.to_json
84 end 84 end
85 end 85 end
86 86
87 def clean 87 def clean
88 self.cart = nil 88 self.cart = nil
89 - render :text => {  
90 - :ok => true,  
91 - :error => {:code => 0} 89 + render text: {
  90 + ok: true,
  91 + error: {code: 0}
92 }.to_json 92 }.to_json
93 end 93 end
94 94
@@ -121,7 +121,7 @@ class ShoppingCartPluginController < OrdersPluginController @@ -121,7 +121,7 @@ class ShoppingCartPluginController < OrdersPluginController
121 @profile = cart_profile 121 @profile = cart_profile
122 @order = profile.sales.build consumer: user 122 @order = profile.sales.build consumer: user
123 123
124 - @order.supplier_delivery = profile.delivery_methods.find session[:cart][:last_delivery_option_id] rescue nil 124 + @order.supplier_delivery = profile.delivery_methods.where(id: session[:cart][:last_delivery_option_id]).first
125 if repeat_order_id = self.cart[:repeat_order_id] 125 if repeat_order_id = self.cart[:repeat_order_id]
126 repeat_order = cart_profile.orders.where(id: repeat_order_id).first 126 repeat_order = cart_profile.orders.where(id: repeat_order_id).first
127 @order.consumer_delivery_data = repeat_order.consumer_delivery_data if repeat_order 127 @order.consumer_delivery_data = repeat_order.consumer_delivery_data if repeat_order
@@ -146,23 +146,23 @@ class ShoppingCartPluginController < OrdersPluginController @@ -146,23 +146,23 @@ class ShoppingCartPluginController < OrdersPluginController
146 end 146 end
147 147
148 def visibility 148 def visibility
149 - render :text => visible?.to_json 149 + render text: visible?.to_json
150 end 150 end
151 151
152 def show 152 def show
153 begin 153 begin
154 self.cart[:visibility] = true 154 self.cart[:visibility] = true
155 - render :text => {  
156 - :ok => true,  
157 - :message => _('Basket displayed.'),  
158 - :error => {:code => 0} 155 + render text: {
  156 + ok: true,
  157 + message: _('Basket displayed.'),
  158 + error: {code: 0}
159 }.to_json 159 }.to_json
160 rescue Exception => exception 160 rescue Exception => exception
161 - render :text => {  
162 - :ok => false,  
163 - :error => {  
164 - :code => 7,  
165 - :message => exception.message 161 + render text: {
  162 + ok: false,
  163 + error: {
  164 + code: 7,
  165 + message: exception.message
166 } 166 }
167 }.to_json 167 }.to_json
168 end 168 end
@@ -171,17 +171,17 @@ class ShoppingCartPluginController < OrdersPluginController @@ -171,17 +171,17 @@ class ShoppingCartPluginController < OrdersPluginController
171 def hide 171 def hide
172 begin 172 begin
173 self.cart[:visibility] = false 173 self.cart[:visibility] = false
174 - render :text => {  
175 - :ok => true,  
176 - :message => _('Basket hidden.'),  
177 - :error => {:code => 0} 174 + render text: {
  175 + ok: true,
  176 + message: _('Basket hidden.'),
  177 + error: {code: 0}
178 }.to_json 178 }.to_json
179 rescue Exception => exception 179 rescue Exception => exception
180 - render :text => {  
181 - :ok => false,  
182 - :error => {  
183 - :code => 8,  
184 - :message => exception.message 180 + render text: {
  181 + ok: false,
  182 + error: {
  183 + code: 8,
  184 + message: exception.message
185 } 185 }
186 }.to_json 186 }.to_json
187 end 187 end
@@ -189,7 +189,7 @@ class ShoppingCartPluginController < OrdersPluginController @@ -189,7 +189,7 @@ class ShoppingCartPluginController < OrdersPluginController
189 189
190 def update_supplier_delivery 190 def update_supplier_delivery
191 @profile = cart_profile 191 @profile = cart_profile
192 - supplier_delivery = @profile.delivery_methods.find params[:order][:supplier_delivery_id] 192 + supplier_delivery = @profile.delivery_methods.where(id: params[:order][:supplier_delivery_id]).first
193 order = build_order self.cart[:items], supplier_delivery 193 order = build_order self.cart[:items], supplier_delivery
194 total_price = order.total_price 194 total_price = order.total_price
195 render json: { 195 render json: {
@@ -210,11 +210,11 @@ class ShoppingCartPluginController < OrdersPluginController @@ -210,11 +210,11 @@ class ShoppingCartPluginController < OrdersPluginController
210 210
211 def validate_same_profile(product) 211 def validate_same_profile(product)
212 if self.cart && self.cart[:profile_id] && product.profile_id != self.cart[:profile_id] 212 if self.cart && self.cart[:profile_id] && product.profile_id != self.cart[:profile_id]
213 - render :text => {  
214 - :ok => false,  
215 - :error => {  
216 - :code => 1,  
217 - :message => _("Your basket contains items from '%{profile_name}'. Please empty the basket or checkout before adding items from here.") % {profile_name: cart_profile.short_name} 213 + render text: {
  214 + ok: false,
  215 + error: {
  216 + code: 1,
  217 + message: _("Your basket contains items from '%{profile_name}'. Please empty the basket or checkout before adding items from here.") % {profile_name: cart_profile.short_name}
218 } 218 }
219 }.to_json 219 }.to_json
220 return nil 220 return nil
@@ -224,11 +224,11 @@ class ShoppingCartPluginController < OrdersPluginController @@ -224,11 +224,11 @@ class ShoppingCartPluginController < OrdersPluginController
224 224
225 def validate_cart_presence 225 def validate_cart_presence
226 if self.cart.nil? 226 if self.cart.nil?
227 - render :text => {  
228 - :ok => false,  
229 - :error => {  
230 - :code => 2,  
231 - :message => _("There is no basket.") 227 + render text: {
  228 + ok: false,
  229 + error: {
  230 + code: 2,
  231 + message: _("There is no basket.")
232 } 232 }
233 }.to_json 233 }.to_json
234 return false 234 return false
@@ -240,11 +240,11 @@ class ShoppingCartPluginController < OrdersPluginController @@ -240,11 +240,11 @@ class ShoppingCartPluginController < OrdersPluginController
240 begin 240 begin
241 product = Product.find(id) 241 product = Product.find(id)
242 rescue ActiveRecord::RecordNotFound 242 rescue ActiveRecord::RecordNotFound
243 - render :text => {  
244 - :ok => false,  
245 - :error => {  
246 - :code => 3,  
247 - :message => _("This enterprise doesn't have this product.") 243 + render text: {
  244 + ok: false,
  245 + error: {
  246 + code: 3,
  247 + message: _("This enterprise doesn't have this product.")
248 } 248 }
249 }.to_json 249 }.to_json
250 return nil 250 return nil
@@ -254,11 +254,11 @@ class ShoppingCartPluginController < OrdersPluginController @@ -254,11 +254,11 @@ class ShoppingCartPluginController < OrdersPluginController
254 254
255 def validate_cart_has_product(id) 255 def validate_cart_has_product(id)
256 if !self.cart[:items].has_key?(id) 256 if !self.cart[:items].has_key?(id)
257 - render :text => {  
258 - :ok => false,  
259 - :error => {  
260 - :code => 4,  
261 - :message => _("The basket doesn't have this product.") 257 + render text: {
  258 + ok: false,
  259 + error: {
  260 + code: 4,
  261 + message: _("The basket doesn't have this product.")
262 } 262 }
263 }.to_json 263 }.to_json
264 return false 264 return false
@@ -268,11 +268,11 @@ class ShoppingCartPluginController < OrdersPluginController @@ -268,11 +268,11 @@ class ShoppingCartPluginController < OrdersPluginController
268 268
269 def validate_item_quantity(quantity) 269 def validate_item_quantity(quantity)
270 if quantity.to_i < 1 270 if quantity.to_i < 1
271 - render :text => {  
272 - :ok => false,  
273 - :error => {  
274 - :code => 5,  
275 - :message => _("Invalid quantity.") 271 + render text: {
  272 + ok: false,
  273 + error: {
  274 + code: 5,
  275 + message: _("Invalid quantity.")
276 } 276 }
277 }.to_json 277 }.to_json
278 return false 278 return false
@@ -284,12 +284,12 @@ class ShoppingCartPluginController &lt; OrdersPluginController @@ -284,12 +284,12 @@ class ShoppingCartPluginController &lt; OrdersPluginController
284 products_list = {}; items.each do |id, quantity| 284 products_list = {}; items.each do |id, quantity|
285 product = Product.find(id) 285 product = Product.find(id)
286 price = product.price || 0 286 price = product.price || 0
287 - products_list[id] = {:quantity => quantity, :price => price, :name => product.name} 287 + products_list[id] = {quantity: quantity, price: price, name: product.name}
288 end 288 end
289 289
290 order = OrdersPlugin::Sale.new 290 order = OrdersPlugin::Sale.new
291 order.profile = environment.profiles.find(cart[:profile_id]) 291 order.profile = environment.profiles.find(cart[:profile_id])
292 - order.supplier_delivery = profile.delivery_methods.find params[:order][:supplier_delivery_id] 292 + order.supplier_delivery = profile.delivery_methods.where(id: params[:order][:supplier_delivery_id]).first
293 order.session_id = session_id unless user 293 order.session_id = session_id unless user
294 order.consumer = user 294 order.consumer = user
295 order.source = 'shopping_cart_plugin' 295 order.source = 'shopping_cart_plugin'
@@ -330,11 +330,11 @@ class ShoppingCartPluginController &lt; OrdersPluginController @@ -330,11 +330,11 @@ class ShoppingCartPluginController &lt; OrdersPluginController
330 after_filter :save_cookie 330 after_filter :save_cookie
331 def save_cookie 331 def save_cookie
332 if @cart.nil? 332 if @cart.nil?
333 - cookies.delete(cookie_key, :path => '/plugin/shopping_cart') 333 + cookies.delete(cookie_key, path: '/plugin/shopping_cart')
334 else 334 else
335 cookies[cookie_key] = { 335 cookies[cookie_key] = {
336 - :value => Base64.encode64(@cart.to_yaml),  
337 - :path => "/plugin/shopping_cart" 336 + value: Base64.encode64(@cart.to_yaml),
  337 + path: "/plugin/shopping_cart"
338 } 338 }
339 end 339 end
340 end 340 end
@@ -351,20 +351,20 @@ class ShoppingCartPluginController &lt; OrdersPluginController @@ -351,20 +351,20 @@ class ShoppingCartPluginController &lt; OrdersPluginController
351 self.cart[:items].collect do |id, quantity| 351 self.cart[:items].collect do |id, quantity|
352 product = Product.find_by_id(id) 352 product = Product.find_by_id(id)
353 if product 353 if product
354 - { :id => product.id,  
355 - :name => product.name,  
356 - :price => get_price(product, product.profile.environment),  
357 - :description => product.description,  
358 - :picture => product.default_image(:minor),  
359 - :quantity => quantity 354 + { id: product.id,
  355 + name: product.name,
  356 + price: get_price(product, product.profile.environment),
  357 + description: product.description,
  358 + picture: product.default_image(:minor),
  359 + quantity: quantity
360 } 360 }
361 else 361 else
362 - { :id => id,  
363 - :name => _('Undefined product'),  
364 - :price => 0,  
365 - :description => _('Wrong product id'),  
366 - :picture => '',  
367 - :quantity => quantity 362 + { id: id,
  363 + name: _('Undefined product'),
  364 + price: 0,
  365 + description: _('Wrong product id'),
  366 + picture: '',
  367 + quantity: quantity
368 } 368 }
369 end 369 end
370 end 370 end
plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
@@ -5,13 +5,8 @@ class ShoppingCartPluginMyprofileController &lt; MyProfileController @@ -5,13 +5,8 @@ class ShoppingCartPluginMyprofileController &lt; MyProfileController
5 def edit 5 def edit
6 params[:settings] = treat_cart_options(params[:settings]) 6 params[:settings] = treat_cart_options(params[:settings])
7 @settings = profile.shopping_cart_settings params[:settings] || {} 7 @settings = profile.shopping_cart_settings params[:settings] || {}
8 - respond_to do |format|  
9 - format.js do  
10 - if request.post?  
11 - @success = @settings.save!  
12 - end  
13 - end  
14 - format.html 8 + if request.post?
  9 + @success = @settings.save!
15 end 10 end
16 end 11 end
17 12
plugins/shopping_cart/delivery_admin.feature
@@ -1,81 +0,0 @@ @@ -1,81 +0,0 @@
1 -Feature: delivery administration  
2 - As an enterprise's administrator  
3 - I want to create delivery methods  
4 - In order to allow my customer to choose which delivery they want  
5 -  
6 - Background:  
7 - Given "ShoppingCart" plugin is enabled  
8 - And "Delivery" plugin is enabled  
9 - And the following users  
10 - | login | name |  
11 - | moe | Moe |  
12 - And the following enterprise  
13 - | identifier | name | owner |  
14 - | moes-tavern | Moes Tavern | moe |  
15 - And the shopping basket is enabled on "Moes Tavern"  
16 - And "Moe" is admin of "Moes Tavern"  
17 - And I am logged in as "moe"  
18 - And I go to moes-tavern's control panel  
19 -  
20 - @selenium  
21 - Scenario: enable delivery  
22 - Given I follow "Shopping basket"  
23 - When I check "Enable shopping basket"  
24 - Then I should see "Deliveries or pickups"  
25 -  
26 - @selenium  
27 - Scenario: disable delivery  
28 - Given I follow "Shopping basket"  
29 - When I uncheck "Enable shopping basket"  
30 - Then I should not see "Deliveries or pickups"  
31 -  
32 - @selenium  
33 - Scenario: create new deliver  
34 - Given I follow "Shopping basket"  
35 - And I check "Enable shopping basket"  
36 - And I follow "New delivery or pickup"  
37 - And I select "Deliver" from "Type"  
38 - And I fill in "Name" with "Bike"  
39 - And I fill in "Description" with "Beers delivered with my old bike."  
40 - And I fill in "Fixed cost" with "8.00"  
41 - And I fill in "Order's minimum price for free delivery" with "35.50"  
42 - When I press "Add"  
43 - Then I should see "Bike" within ".delivery-method"  
44 -  
45 - @selenium  
46 - Scenario: create new pickup  
47 - Given I follow "Shopping basket"  
48 - And I check "Enable shopping basket"  
49 - And I follow "New delivery or pickup"  
50 - And I select "Pickup" from "Type"  
51 - And I fill in "Name" with "Bar"  
52 - And I fill in "Description" with "Come to my bar and pick it yourself."  
53 - And I fill in "Fixed cost" with "0.00"  
54 - When I press "Add"  
55 - Then I should see "Bar"  
56 -  
57 - @selenium  
58 - Scenario: remove delivery  
59 - Given I follow "Shopping basket"  
60 - And I check "Enable shopping basket"  
61 - And I follow "New delivery or pickup"  
62 - And I fill in "Name" with "Bike"  
63 - When I press "Add"  
64 - Then I should see "Bike"  
65 - And I follow "Remove" within ".delivery-method"  
66 - When I confirm the browser dialog  
67 - Then I should see "Bike"  
68 -  
69 - @selenium  
70 - Scenario: edit delivery  
71 - Given I follow "Shopping basket"  
72 - And I check "Enable shopping basket"  
73 - And I follow "New delivery or pickup"  
74 - And I fill in "Name" with "Bike"  
75 - When I press "Add"  
76 - Then I should see "Bike"  
77 - And I follow "Edit" within ".delivery-method"  
78 - And I fill in "Name" with "Car"  
79 - When I press "Save"  
80 - Then I should not see "Bike"  
81 - Then I should see "Car"  
plugins/shopping_cart/delivery_client.feature
@@ -1,77 +0,0 @@ @@ -1,77 +0,0 @@
1 -Feature: delivery client  
2 - As an enterprise's client  
3 - I want to choose the delivery method  
4 - In order to receive my procucts properly  
5 -  
6 - Background:  
7 - Given "ShoppingCart" plugin is enabled  
8 - And "Delivery" plugin is enabled  
9 - And the following users  
10 - | login | name | email |  
11 - | moe | Moe | moe@springfield.com |  
12 - | homer | Homer | homer@springfield.com |  
13 - And the following enterprise  
14 - | identifier | name | owner |  
15 - | moes-tavern | Moes Tavern | moe |  
16 - And the shopping basket is enabled on "Moes Tavern"  
17 - And the following product_categories  
18 - | name |  
19 - | Beer |  
20 - | Snacks |  
21 - And the following products  
22 - | owner | category | name | price |  
23 - | moes-tavern | beer | Duff | 3.00 |  
24 - | moes-tavern | snacks | French fries | 7.00 |  
25 - And "moes-tavern" has the following delivery methods  
26 - | delivery_type | name | description | fixed_cost | free_over_price |  
27 - | deliver | Bike | My good old bike. | 8.00 | 10.00 |  
28 - | pickup | Bar | Come to my bar and drink it! | 0.00 | 0.00 |  
29 - And feature "products_for_enterprises" is enabled on environment  
30 - And I am logged in as "homer"  
31 - And I go to moes-tavern's products page  
32 -  
33 - @selenium  
34 - Scenario: choose deliver method for purchase  
35 - Given I follow "Add to basket"  
36 - And I follow "Add to basket"  
37 - And I should see "Show basket"  
38 - And I follow "Show basket"  
39 - And I follow "Shopping checkout"  
40 - And I fill in "Contact phone" with "123456789"  
41 - When I select "Bike ($8.00)" from "Option"  
42 - Then I should see "My good old bike." within ".instructions"  
43 - And I should see "Address"  
44 - And I should see "Bike" within "#delivery-name"  
45 - And I should see "8.00" within "#delivery-price"  
46 -  
47 - @selenium  
48 - Scenario: choose pickup method for purchase  
49 - Given I follow "Add to basket"  
50 - And I follow "Add to basket"  
51 - And I should see "Show basket"  
52 - And I follow "Show basket"  
53 - And I follow "Shopping checkout"  
54 - And I fill in "Contact phone" with "123456789"  
55 - When I select "Bar" from "Option"  
56 - Then I should see "Come to my bar and drink it!" within ".instructions"  
57 - And I should not see "Address"  
58 - And I should see "Bar" within "#delivery-name"  
59 - And I should see "0.00" within "#delivery-price"  
60 -  
61 - @selenium  
62 - Scenario: gets free delivery due to free over price  
63 - Given I follow "Add to basket"  
64 - And I follow "Add to basket"  
65 - And I follow "Add to basket"  
66 - And I follow "Add to basket"  
67 - And I follow "Add to basket"  
68 - And I follow "Add to basket"  
69 - And I should see "Show basket"  
70 - And I follow "Show basket"  
71 - And I follow "Shopping checkout"  
72 - And I fill in "Contact phone" with "123456789"  
73 - When I select "Bike ($8.00)" from "Option"  
74 - Then I should see "My good old bike." within ".instructions"  
75 - And I should see "Address"  
76 - And I should see "Bike" within "#delivery-name"  
77 - And I should see "0.00" within "#delivery-price"  
plugins/shopping_cart/features/delivery_admin.feature 0 → 100644
@@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
  1 +Feature: delivery administration
  2 + As an enterprise's administrator
  3 + I want to create delivery methods
  4 + In order to allow my customer to choose which delivery they want
  5 +
  6 + Background:
  7 + Given "ShoppingCart" plugin is enabled
  8 + And "Delivery" plugin is enabled
  9 + And the following users
  10 + | login | name |
  11 + | moe | Moe |
  12 + And the following enterprise
  13 + | identifier | name | owner |
  14 + | moes-tavern | Moes Tavern | moe |
  15 + And the shopping basket is enabled on "Moes Tavern"
  16 + And "Moe" is admin of "Moes Tavern"
  17 + And I am logged in as "moe"
  18 + And I go to moes-tavern's control panel
  19 +
  20 + @selenium
  21 + Scenario: enable delivery
  22 + Given I follow "Shopping basket"
  23 + When I check "Enable shopping basket"
  24 + Then I should see "Deliveries or pickups"
  25 +
  26 + @selenium
  27 + Scenario: disable delivery
  28 + Given I follow "Shopping basket"
  29 + When I uncheck "Enable shopping basket"
  30 + Then I should not see "Deliveries or pickups"
  31 +
  32 + @selenium
  33 + Scenario: create new deliver
  34 + Given I follow "Shopping basket"
  35 + And I check "Enable shopping basket"
  36 + And I follow "New delivery or pickup"
  37 + And I select "Deliver" from "Type"
  38 + And I fill in "Name" with "Bike"
  39 + And I fill in "Description" with "Beers delivered with my old bike."
  40 + And I fill in "Fixed cost" with "8.00"
  41 + And I fill in "Order's minimum price for free delivery" with "35.50"
  42 + When I press "Add"
  43 + Then I should see "Bike" within ".delivery-method"
  44 +
  45 + @selenium
  46 + Scenario: create new pickup
  47 + Given I follow "Shopping basket"
  48 + And I check "Enable shopping basket"
  49 + And I follow "New delivery or pickup"
  50 + And I select "Pickup" from "Type"
  51 + And I fill in "Name" with "Bar"
  52 + And I fill in "Description" with "Come to my bar and pick it yourself."
  53 + And I fill in "Fixed cost" with "0.00"
  54 + When I press "Add"
  55 + Then I should see "Bar"
  56 +
  57 + @selenium
  58 + Scenario: remove delivery
  59 + Given I follow "Shopping basket"
  60 + And I check "Enable shopping basket"
  61 + And I follow "New delivery or pickup"
  62 + And I fill in "Name" with "Bike"
  63 + When I press "Add"
  64 + Then I should see "Bike"
  65 + And I follow "Remove" within ".delivery-method"
  66 + When I confirm the browser dialog
  67 + Then I should see "Bike"
  68 +
  69 + @selenium
  70 + Scenario: edit delivery
  71 + Given I follow "Shopping basket"
  72 + And I check "Enable shopping basket"
  73 + And I follow "New delivery or pickup"
  74 + And I fill in "Name" with "Bike"
  75 + When I press "Add"
  76 + Then I should see "Bike"
  77 + And I follow "Edit" within ".delivery-method"
  78 + And I fill in "Name" with "Car"
  79 + When I press "Save"
  80 + Then I should not see "Bike"
  81 + Then I should see "Car"
plugins/shopping_cart/features/delivery_client.feature 0 → 100644
@@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
  1 +Feature: delivery client
  2 + As an enterprise's client
  3 + I want to choose the delivery method
  4 + In order to receive my procucts properly
  5 +
  6 + Background:
  7 + Given "ShoppingCart" plugin is enabled
  8 + And "Delivery" plugin is enabled
  9 + And the following users
  10 + | login | name | email |
  11 + | moe | Moe | moe@springfield.com |
  12 + | homer | Homer | homer@springfield.com |
  13 + And the following enterprise
  14 + | identifier | name | owner |
  15 + | moes-tavern | Moes Tavern | moe |
  16 + And the shopping basket is enabled on "Moes Tavern"
  17 + And the following product_categories
  18 + | name |
  19 + | Beer |
  20 + | Snacks |
  21 + And the following products
  22 + | owner | category | name | price |
  23 + | moes-tavern | beer | Duff | 3.00 |
  24 + | moes-tavern | snacks | French fries | 7.00 |
  25 + And "moes-tavern" has the following delivery methods
  26 + | delivery_type | name | description | fixed_cost | free_over_price |
  27 + | deliver | Bike | My good old bike. | 8.00 | 10.00 |
  28 + | pickup | Bar | Come to my bar and drink it! | 0.00 | 0.00 |
  29 + And feature "products_for_enterprises" is enabled on environment
  30 + And I am logged in as "homer"
  31 + And I go to moes-tavern's products page
  32 +
  33 + @selenium
  34 + Scenario: choose deliver method for purchase
  35 + Given I follow "Add to basket"
  36 + And I follow "Add to basket"
  37 + And I should see "Show basket"
  38 + And I follow "Show basket"
  39 + And I follow "Shopping checkout"
  40 + And I fill in "Contact phone" with "123456789"
  41 + When I select "Bike ($8.00)" from "Option"
  42 + Then I should see "My good old bike." within ".instructions"
  43 + And I should see "Address"
  44 + And I should see "Bike" within "#delivery-name"
  45 + And I should see "8.00" within "#delivery-price"
  46 +
  47 + @selenium
  48 + Scenario: choose pickup method for purchase
  49 + Given I follow "Add to basket"
  50 + And I follow "Add to basket"
  51 + And I should see "Show basket"
  52 + And I follow "Show basket"
  53 + And I follow "Shopping checkout"
  54 + And I fill in "Contact phone" with "123456789"
  55 + When I select "Bar" from "Option"
  56 + Then I should see "Come to my bar and drink it!" within ".instructions"
  57 + And I should not see "Address"
  58 + And I should see "Bar" within "#delivery-name"
  59 + And I should see "0.00" within "#delivery-price"
  60 +
  61 + @selenium
  62 + Scenario: gets free delivery due to free over price
  63 + Given I follow "Add to basket"
  64 + And I follow "Add to basket"
  65 + And I follow "Add to basket"
  66 + And I follow "Add to basket"
  67 + And I follow "Add to basket"
  68 + And I follow "Add to basket"
  69 + And I should see "Show basket"
  70 + And I follow "Show basket"
  71 + And I follow "Shopping checkout"
  72 + And I fill in "Contact phone" with "123456789"
  73 + When I select "Bike ($8.00)" from "Option"
  74 + Then I should see "My good old bike." within ".instructions"
  75 + And I should see "Address"
  76 + And I should see "Bike" within "#delivery-name"
  77 + And I should see "0.00" within "#delivery-price"
plugins/shopping_cart/features/step_definitions/orders_steps.rb
1 -Given /^"([^""]*)" has the following delivery methods$/ do |name, table|  
2 - enterprise = Enterprise.find_by_name(name) || Enterprise[name]  
3 - table.hashes.map{|item| item.dup}.each do |item|  
4 - delivery_method = enterprise.delivery_methods.build  
5 - delivery_method.update_attributes(item)  
6 - end  
7 -end  
8 -  
9 Given /^the following purchase from "([^""]*)" on "([^""]*)" that is "([^""]*)"$/ do |consumer_identifier, enterprise_identifier, status, table| 1 Given /^the following purchase from "([^""]*)" on "([^""]*)" that is "([^""]*)"$/ do |consumer_identifier, enterprise_identifier, status, table|
10 consumer = Person.find_by_name(consumer_identifier) || Person[consumer_identifier] 2 consumer = Person.find_by_name(consumer_identifier) || Person[consumer_identifier]
11 enterprise = Enterprise.find_by_name(enterprise_identifier) || Enterprise[enterprise_identifier] 3 enterprise = Enterprise.find_by_name(enterprise_identifier) || Enterprise[enterprise_identifier]
plugins/shopping_cart/lib/shopping_cart_plugin/cart_helper.rb
@@ -59,7 +59,7 @@ module ShoppingCartPlugin::CartHelper @@ -59,7 +59,7 @@ module ShoppingCartPlugin::CartHelper
59 @order 59 @order
60 end 60 end
61 61
62 - def items_table(items, profile, delivery_method = nil, by_mail = false) 62 + def items_table(items, delivery_method = nil, by_mail = false)
63 # partial key needed in mailer context 63 # partial key needed in mailer context
64 render partial: 'shopping_cart_plugin/items', locals: {order: build_order(items, delivery_method), by_mail: by_mail} 64 render partial: 'shopping_cart_plugin/items', locals: {order: build_order(items, delivery_method), by_mail: by_mail}
65 end 65 end
plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb
1 -require File.dirname(__FILE__) + '/../../../../test/test_helper'  
2 -require File.dirname(__FILE__) + '/../../controllers/shopping_cart_plugin_controller' 1 +require 'test_helper'
  2 +require_relative '../../controllers/shopping_cart_plugin_controller'
3 3
4 # Re-raise errors caught by the controller. 4 # Re-raise errors caught by the controller.
5 class ShoppingCartPluginController; def rescue_action(e) raise e end; end 5 class ShoppingCartPluginController; def rescue_action(e) raise e end; end
@@ -12,7 +12,7 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -12,7 +12,7 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
12 @response = ActionController::TestResponse.new 12 @response = ActionController::TestResponse.new
13 @profile = fast_create(Enterprise) 13 @profile = fast_create(Enterprise)
14 @profile.contact_email = 'enterprise@noosfero.org';@profile.save 14 @profile.contact_email = 'enterprise@noosfero.org';@profile.save
15 - @product = fast_create(Product, :profile_id => @profile.id) 15 + @product = fast_create(Product, profile_id: @profile.id)
16 end 16 end
17 attr_reader :profile 17 attr_reader :profile
18 attr_reader :product 18 attr_reader :product
@@ -23,22 +23,22 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -23,22 +23,22 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
23 end 23 end
24 24
25 should 'add a new product to cart' do 25 should 'add a new product to cart' do
26 - get :add, :id => product.id 26 + get :add, id: product.id
27 27
28 assert product_in_cart?(product) 28 assert product_in_cart?(product)
29 assert_equal 1, product_quantity(product) 29 assert_equal 1, product_quantity(product)
30 end 30 end
31 31
32 should 'grow quantity through add' do 32 should 'grow quantity through add' do
33 - get :add, :id => product.id 33 + get :add, id: product.id
34 assert_equal 1, product_quantity(product) 34 assert_equal 1, product_quantity(product)
35 35
36 - get :add, :id => product.id 36 + get :add, id: product.id
37 assert_equal 2, product_quantity(product) 37 assert_equal 2, product_quantity(product)
38 end 38 end
39 39
40 should 'not add product to cart if it does not exists' do 40 should 'not add product to cart if it does not exists' do
41 - assert_nothing_raised { get :add, :id => 9999 } 41 + assert_nothing_raised { get :add, id: 9999 }
42 42
43 refute product_in_cart?(product) 43 refute product_in_cart?(product)
44 refute response_ok? 44 refute response_ok?
@@ -46,10 +46,10 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -46,10 +46,10 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
46 end 46 end
47 47
48 should 'remove cart if the product being removed is the last one' do 48 should 'remove cart if the product being removed is the last one' do
49 - get :add, :id => product.id 49 + get :add, id: product.id
50 assert cart? 50 assert cart?
51 51
52 - get :remove, :id => product.id 52 + get :remove, id: product.id
53 refute cart? 53 refute cart?
54 end 54 end
55 55
@@ -57,25 +57,25 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -57,25 +57,25 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
57 instantiate_cart 57 instantiate_cart
58 refute cart? 58 refute cart?
59 59
60 - assert_nothing_raised { get :remove, :id => 9999 } 60 + assert_nothing_raised { get :remove, id: 9999 }
61 refute response_ok? 61 refute response_ok?
62 assert_equal 2, reponse_error_code 62 assert_equal 2, reponse_error_code
63 end 63 end
64 64
65 should 'just remove product if there are other products on cart' do 65 should 'just remove product if there are other products on cart' do
66 - another_product = fast_create(Product, :profile_id => profile.id)  
67 - get :add, :id => product.id  
68 - get :add, :id => another_product.id 66 + another_product = fast_create(Product, profile_id: profile.id)
  67 + get :add, id: product.id
  68 + get :add, id: another_product.id
69 69
70 - get :remove, :id => product.id 70 + get :remove, id: product.id
71 assert cart? 71 assert cart?
72 refute product_in_cart?(product) 72 refute product_in_cart?(product)
73 end 73 end
74 74
75 should 'not try to remove a product that is not in the cart' do 75 should 'not try to remove a product that is not in the cart' do
76 - get :add, :id => product.id 76 + get :add, id: product.id
77 assert cart? 77 assert cart?
78 - assert_nothing_raised { get :remove, :id => 9999 } 78 + assert_nothing_raised { get :remove, id: 9999 }
79 79
80 refute response_ok? 80 refute response_ok?
81 assert_equal 4, reponse_error_code 81 assert_equal 4, reponse_error_code
@@ -91,17 +91,17 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -91,17 +91,17 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
91 end 91 end
92 92
93 should 'list products without errors' do 93 should 'list products without errors' do
94 - get :add, :id => product.id 94 + get :add, id: product.id
95 95
96 assert_nothing_raised { get :list } 96 assert_nothing_raised { get :list }
97 assert response_ok? 97 assert response_ok?
98 end 98 end
99 99
100 should 'update the quantity of a product' do 100 should 'update the quantity of a product' do
101 - get :add, :id => product.id 101 + get :add, id: product.id
102 assert_equal 1, product_quantity(product) 102 assert_equal 1, product_quantity(product)
103 103
104 - get :update_quantity, :id => product.id, :quantity => 3 104 + get :update_quantity, id: product.id, quantity: 3
105 assert_equal 3, product_quantity(product) 105 assert_equal 3, product_quantity(product)
106 end 106 end
107 107
@@ -109,36 +109,36 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -109,36 +109,36 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
109 instantiate_cart 109 instantiate_cart
110 refute cart? 110 refute cart?
111 111
112 - assert_nothing_raised { get :update_quantity, :id => 9999, :quantity => 3 } 112 + assert_nothing_raised { get :update_quantity, id: 9999, quantity: 3 }
113 refute response_ok? 113 refute response_ok?
114 assert_equal 2, reponse_error_code 114 assert_equal 2, reponse_error_code
115 end 115 end
116 116
117 should 'not try to update the quantity of a product that is not in the cart' do 117 should 'not try to update the quantity of a product that is not in the cart' do
118 - get :add, :id => product.id 118 + get :add, id: product.id
119 assert cart? 119 assert cart?
120 - assert_nothing_raised { get :update_quantity, :id => 9999, :quantity => 3 } 120 + assert_nothing_raised { get :update_quantity, id: 9999, quantity: 3 }
121 121
122 refute response_ok? 122 refute response_ok?
123 assert_equal 4, reponse_error_code 123 assert_equal 4, reponse_error_code
124 end 124 end
125 125
126 should 'not update the quantity of a product with a invalid value' do 126 should 'not update the quantity of a product with a invalid value' do
127 - get :add, :id => product.id 127 + get :add, id: product.id
128 128
129 - assert_nothing_raised { get :update_quantity, :id => product.id, :quantity => -1} 129 + assert_nothing_raised { get :update_quantity, id: product.id, quantity: -1}
130 refute response_ok? 130 refute response_ok?
131 assert_equal 5, reponse_error_code 131 assert_equal 5, reponse_error_code
132 132
133 - assert_nothing_raised { get :update_quantity, :id => product.id, :quantity => 'asdf'} 133 + assert_nothing_raised { get :update_quantity, id: product.id, quantity: 'asdf'}
134 refute response_ok? 134 refute response_ok?
135 assert_equal 5, reponse_error_code 135 assert_equal 5, reponse_error_code
136 end 136 end
137 137
138 should 'clean the cart' do 138 should 'clean the cart' do
139 - another_product = fast_create(Product, :profile_id => profile.id)  
140 - get :add, :id => product.id  
141 - get :add, :id => another_product.id 139 + another_product = fast_create(Product, profile_id: profile.id)
  140 + get :add, id: product.id
  141 + get :add, id: another_product.id
142 142
143 assert_nothing_raised { get :clean } 143 assert_nothing_raised { get :clean }
144 refute cart? 144 refute cart?
@@ -151,12 +151,11 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -151,12 +151,11 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
151 end 151 end
152 152
153 should 'register order on send request' do 153 should 'register order on send request' do
154 - product1 = fast_create(Product, :profile_id => profile.id, :price => 1.99)  
155 - product2 = fast_create(Product, :profile_id => profile.id, :price => 2.23)  
156 - @controller.stubs(:cart).returns({ :profile_id => profile.id, :items => {product1.id => 1, product2.id => 2}}) 154 + product1 = fast_create(Product, profile_id: profile.id, price: 1.99)
  155 + product2 = fast_create(Product, profile_id: profile.id, price: 2.23)
  156 + @controller.stubs(:cart).returns({ profile_id: profile.id, items: {product1.id => 1, product2.id => 2}})
157 assert_difference 'OrdersPlugin::Order.count', 1 do 157 assert_difference 'OrdersPlugin::Order.count', 1 do
158 - post :send_request,  
159 - :customer => {:name => "Manuel", :email => "manuel@ceu.com"} 158 + xhr :post, :send_request, order: {consumer_data: {name: "Manuel", email: "manuel@ceu.com"}}
160 end 159 end
161 160
162 order = OrdersPlugin::Order.last 161 order = OrdersPlugin::Order.last
@@ -165,15 +164,14 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -165,15 +164,14 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
165 assert_equal 1, order.products_list[product1.id][:quantity] 164 assert_equal 1, order.products_list[product1.id][:quantity]
166 assert_equal 2.23, order.products_list[product2.id][:price] 165 assert_equal 2.23, order.products_list[product2.id][:price]
167 assert_equal 2, order.products_list[product2.id][:quantity] 166 assert_equal 2, order.products_list[product2.id][:quantity]
168 - assert_equal 'confirmed', order.status 167 + assert_equal 'ordered', order.status
169 end 168 end
170 169
171 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
172 - product1 = fast_create(Product, :profile_id => profile.id)  
173 - @controller.stubs(:cart).returns({ :profile_id => profile.id, :items => {product1.id => 1}}) 171 + product1 = fast_create(Product, profile_id: profile.id)
  172 + @controller.stubs(:cart).returns({ profile_id: profile.id, items: {product1.id => 1}})
174 assert_difference 'OrdersPlugin::Order.count', 1 do 173 assert_difference 'OrdersPlugin::Order.count', 1 do
175 - post :send_request,  
176 - :customer => {:name => "Manuel", :email => "manuel@ceu.com"} 174 + xhr :post, :send_request, order: {consumer_data: {name: "Manuel", email: "manuel@ceu.com"}}
177 end 175 end
178 176
179 order = OrdersPlugin::Order.last 177 order = OrdersPlugin::Order.last
@@ -182,16 +180,15 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -182,16 +180,15 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
182 end 180 end
183 181
184 should 'clean the cart after placing the order' do 182 should 'clean the cart after placing the order' do
185 - product1 = fast_create(Product, :profile_id => profile.id)  
186 - post :add, :id => product1.id  
187 - post :send_request, :customer => { :name => "Manuel", :email => "manuel@ceu.com" } 183 + product1 = fast_create(Product, profile_id: profile.id)
  184 + post :add, id: product1.id
  185 + xhr :post, :send_request, order: {consumer_data: {name: "Manuel", email: "manuel@ceu.com"}}
188 refute cart?, "cart expected to be empty!" 186 refute cart?, "cart expected to be empty!"
189 end 187 end
190 188
191 should 'not allow buy without any cart' do 189 should 'not allow buy without any cart' do
192 get :buy 190 get :buy
193 - refute json_response[:ok]  
194 - assert_equal 2, json_response['error']['code'] 191 + assert_response :redirect
195 end 192 end
196 193
197 private 194 private
@@ -225,8 +222,8 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase @@ -225,8 +222,8 @@ class ShoppingCartPluginControllerTest &lt; ActionController::TestCase
225 # temporary hack...if I don't do this the session stays as an Array instead 222 # temporary hack...if I don't do this the session stays as an Array instead
226 # of a TestSession 223 # of a TestSession
227 def instantiate_cart 224 def instantiate_cart
228 - get :add, :id => product.id  
229 - get :remove, :id => product.id 225 + get :add, id: product.id
  226 + get :remove, id: product.id
230 end 227 end
231 228
232 end 229 end
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
1 -require File.dirname(__FILE__) + '/../../../../test/test_helper' 1 +require 'test_helper'
2 2
3 class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase 3 class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
4 4
5 - TIME_FORMAT = '%Y-%m-%d'  
6 -  
7 def setup 5 def setup
8 @profile = fast_create(Enterprise) 6 @profile = fast_create(Enterprise)
9 @admin = create_user('admin').person 7 @admin = create_user('admin').person
@@ -13,115 +11,23 @@ class ShoppingCartPluginMyprofileControllerTest &lt; ActionController::TestCase @@ -13,115 +11,23 @@ class ShoppingCartPluginMyprofileControllerTest &lt; ActionController::TestCase
13 attr_reader :profile 11 attr_reader :profile
14 12
15 should 'be able to enable shopping cart' do 13 should 'be able to enable shopping cart' do
16 - settings.enabled = false  
17 - settings.save!  
18 - post :edit, :profile => profile.identifier, :settings => {:enabled => '1'}  
19 -  
20 - assert settings.enabled  
21 - end  
22 -  
23 - should 'be able to disable shopping cart' do  
24 - settings.enabled = true  
25 - settings.save!  
26 - post :edit, :profile => profile.identifier, :settings => {:enabled => '0'}  
27 -  
28 - refute settings.enabled  
29 - end 14 + profile.shopping_cart_settings.enabled = false
  15 + profile.shopping_cart_settings.save!
30 16
31 - should 'be able to enable shopping cart delivery' do  
32 - settings.delivery = false  
33 - settings.save!  
34 - post :edit, :profile => profile.identifier, :settings => {:delivery => '1'} 17 + post :edit, profile: profile.identifier, settings: {enabled: '1'}
  18 + profile.reload
35 19
36 - assert settings.delivery 20 + assert profile.shopping_cart_settings.enabled
37 end 21 end
38 22
39 - should 'be able to disable shopping cart delivery' do  
40 - settings.delivery = true  
41 - settings.save!  
42 - post :edit, :profile => profile.identifier, :settings => {:delivery => '0'}  
43 -  
44 - refute settings.delivery  
45 - end  
46 -  
47 - should 'be able to choose the delivery price' do  
48 - price = 4.35  
49 - post :edit, :profile => profile.identifier, :settings => {:delivery_price => price}  
50 -  
51 - assert settings.delivery_price == price.to_s  
52 - end  
53 -  
54 - # FIXME  
55 - should 'be able to choose delivery_options' do  
56 - delivery_options = {:options => ['car', 'bike'], :prices => ['20', '5']}  
57 - post :edit, :profile => profile.identifier, :settings => {:delivery_options => delivery_options}  
58 -  
59 - assert_equal '20', settings.delivery_options['car']  
60 - assert_equal '5', settings.delivery_options['bike']  
61 - end  
62 -  
63 - should 'filter the reports correctly' do  
64 - another_profile = fast_create(Enterprise)  
65 - po1 = OrdersPlugin::Sale.create! :profile => profile, :status => 'confirmed'  
66 - po2 = OrdersPlugin::Sale.create! :profile => profile, :status => 'shipped'  
67 - po3 = OrdersPlugin::Sale.create! :profile => profile, :status => 'confirmed'  
68 - po3.created_at = 1.year.ago  
69 - po3.save!  
70 - po4 = OrdersPlugin::Sale.create! :profile => another_profile, :status => 'confirmed'  
71 -  
72 - post :reports,  
73 - :profile => profile.identifier,  
74 - :from => (Time.now - 1.day).strftime(TIME_FORMAT),  
75 - :to => (Time.now + 1.day).strftime(TIME_FORMAT),  
76 - :filter_status => 'confirmed'  
77 -  
78 - assert_includes assigns(:orders), po1  
79 - assert_not_includes assigns(:orders), po2  
80 - assert_not_includes assigns(:orders), po3  
81 - assert_not_includes assigns(:orders), po4  
82 - end  
83 -  
84 - should 'group filtered orders products and quantities' do  
85 - p1 = fast_create(Product, :profile_id => profile.id, :price => 1, :name => 'p1')  
86 - p2 = fast_create(Product, :profile_id => profile.id, :price => 2, :name => 'p2')  
87 - p3 = fast_create(Product, :profile_id => profile.id, :price => 3)  
88 - po1_products = {p1.id => {:quantity => 1, :price => p1.price, :name => p1.name}, p2.id => {:quantity => 2, :price => p2.price, :name => p2.name }}  
89 - po2_products = {p2.id => {:quantity => 1, :price => p2.price, :name => p2.name }, p3.id => {:quantity => 2, :price => p3.price, :name => p3.name}}  
90 - po1 = OrdersPlugin::Sale.create! :profile => profile, :products_list => po1_products, :status => 'confirmed'  
91 - po2 = OrdersPlugin::Sale.create! :profile => profile, :products_list => po2_products, :status => 'confirmed'  
92 -  
93 - post :reports,  
94 - :profile => profile.identifier,  
95 - :from => (Time.now - 1.day).strftime(TIME_FORMAT),  
96 - :to => (Time.now + 1.day).strftime(TIME_FORMAT),  
97 - :filter_status => 'confirmed'  
98 -  
99 - lineitem1 = ShoppingCartPlugin::LineItem.new(p1.id, p1.name)  
100 - lineitem1.quantity = 1  
101 - lineitem2 = ShoppingCartPlugin::LineItem.new(p2.id, p2.name)  
102 - lineitem2.quantity = 3  
103 - lineitem3 = ShoppingCartPlugin::LineItem.new(p3.id, p3.name)  
104 - lineitem3.quantity = 2  
105 - hash = {p1.id => lineitem1, p2.id => lineitem2, p3.id => lineitem3}  
106 -  
107 - assert_equal hash, assigns(:products)  
108 - end 23 + should 'be able to disable shopping cart' do
  24 + profile.shopping_cart_settings.enabled = true
  25 + profile.shopping_cart_settings.save!
109 26
110 - should 'be able to update the order status' do  
111 - po = OrdersPlugin::Sale.create!(:profile => profile, :status => 'confirmed') 27 + post :edit, profile: profile.identifier, settings: {enabled: '0'}
  28 + profile.reload
112 29
113 - post :update_order_status,  
114 - :profile => profile.identifier,  
115 - :order_id => po.id,  
116 - :order_status => 'confirmed'  
117 - po.reload  
118 - assert_equal 'confirmed', po.status 30 + refute profile.shopping_cart_settings.enabled
119 end 31 end
120 32
121 - private  
122 -  
123 - def settings  
124 - @profile.reload  
125 - profile.shopping_cart_settings  
126 - end  
127 end 33 end
plugins/shopping_cart/test/unit/shopping_cart_plugin/cart_helper_test.rb
1 -require File.dirname(__FILE__) + '/../../../../../test/test_helper' 1 +require 'test_helper'
2 2
3 class ShoppingCartPlugin::CartHelperTest < ActiveSupport::TestCase 3 class ShoppingCartPlugin::CartHelperTest < ActiveSupport::TestCase
4 4
@@ -41,19 +41,4 @@ class ShoppingCartPlugin::CartHelperTest &lt; ActiveSupport::TestCase @@ -41,19 +41,4 @@ class ShoppingCartPlugin::CartHelperTest &lt; ActiveSupport::TestCase
41 assert_equal "#{environment.currency_unit}13#{environment.currency_separator}70", float_to_currency_cart(value,environment) 41 assert_equal "#{environment.currency_unit}13#{environment.currency_separator}70", float_to_currency_cart(value,environment)
42 end 42 end
43 43
44 - should 'return a table of items' do  
45 - enterprise = Enterprise.new(name: "Test Enterprise", identifier: "test-enterprise")  
46 - enterprise.environment = Environment.default  
47 - enterprise.save!  
48 -  
49 - product_category = fast_create(ProductCategory, :name => 'Products')  
50 - product = fast_create(Product, :name => 'test product1', :product_category_id => product_category.id, :profile_id => enterprise.id)  
51 - setting = Noosfero::Plugin::Settings.new(enterprise, ShoppingCartPlugin)  
52 - setting.delivery = true  
53 - setting.save!  
54 -  
55 - assert_match 'table id="cart-items-table"', items_table([product], enterprise)  
56 - assert_match '<td>test product1</td>', items_table([product], enterprise)  
57 - end  
58 -  
59 end 44 end
plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb
@@ -39,7 +39,7 @@ @@ -39,7 +39,7 @@
39 <fieldset> 39 <fieldset>
40 <legend><%=s_('Your Order')%></legend> 40 <legend><%=s_('Your Order')%></legend>
41 <% supplier_delivery = @order.supplier_delivery || profile.delivery_methods.first %> 41 <% supplier_delivery = @order.supplier_delivery || profile.delivery_methods.first %>
42 - <%= items_table @cart[:items], @profile, supplier_delivery %> 42 + <%= items_table @cart[:items], supplier_delivery %>
43 </fieldset> 43 </fieldset>
44 </div> 44 </div>
45 45
plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb
@@ -18,9 +18,11 @@ @@ -18,9 +18,11 @@
18 <li><b><%= c_('Email') %>: </b><%= @order.consumer_data[:email] %></li> 18 <li><b><%= c_('Email') %>: </b><%= @order.consumer_data[:email] %></li>
19 <li><b><%= _('Phone number') %>: </b><%= @order.consumer_data[:contact_phone] %></li> 19 <li><b><%= _('Phone number') %>: </b><%= @order.consumer_data[:contact_phone] %></li>
20 20
21 - <li><b><%= _("Payment's method") %>: </b><%= _ OrdersPlugin::Order::PaymentMethods[@order.payment_data[:method].to_sym].call %></li>  
22 - <% if @order.payment_data[:method] == 'money' %>  
23 - <li><b><%= s_('shopping_cart|Change') %>: </b><%= @order.payment_data[:change] %></li> 21 + <% if @order.payment_data[:method] %>
  22 + <li><b><%= _("Payment's method") %>: </b><%= _ OrdersPlugin::Order::PaymentMethods[@order.payment_data[:method].to_sym].call %></li>
  23 + <% if @order.payment_data[:method] == 'money' %>
  24 + <li><b><%= s_('shopping_cart|Change') %>: </b><%= @order.payment_data[:change] %></li>
  25 + <% end %>
24 <% end %> 26 <% end %>
25 27
26 <li><b><%= _('Delivery or pickup') %>:</b></li> 28 <li><b><%= _('Delivery or pickup') %>:</b></li>
@@ -59,7 +61,7 @@ @@ -59,7 +61,7 @@
59 </ul> 61 </ul>
60 62
61 <p><%=_('Here are the products you bought:')%></p> 63 <p><%=_('Here are the products you bought:')%></p>
62 - <%= items_table(@items, @order.profile, @order.supplier_delivery, true) %> 64 + <%= items_table(@items, @order.supplier_delivery, true) %>
63 <p> 65 <p>
64 --<br/> 66 --<br/>
65 <%=_('Thanks for buying with us!')%><br/> 67 <%=_('Thanks for buying with us!')%><br/>
plugins/shopping_cart/views/shopping_cart_plugin/mailer/supplier_notification.html.erb
@@ -16,9 +16,11 @@ @@ -16,9 +16,11 @@
16 <li><b><%= c_('Email') %>: </b><%= @order.consumer_data[:email] %></li> 16 <li><b><%= c_('Email') %>: </b><%= @order.consumer_data[:email] %></li>
17 <li><b><%= _('Phone number') %>: </b><%= @order.consumer_data[:contact_phone] %></li> 17 <li><b><%= _('Phone number') %>: </b><%= @order.consumer_data[:contact_phone] %></li>
18 18
19 - <li><b><%= _('Payment') %>: </b><%= OrdersPlugin::Order::PaymentMethods[@order.payment_data[:method].to_sym].call %></li>  
20 - <% if @order.payment_data[:method] == 'money' %>  
21 - <li><b><%= s_('shopping_cart|Change') %>: </b><%= @order.payment_data[:change] %></li> 19 + <% if @order.payment_data[:method] %>
  20 + <li><b><%= _('Payment') %>: </b><%= OrdersPlugin::Order::PaymentMethods[@order.payment_data[:method].to_sym].call %></li>
  21 + <% if @order.payment_data[:method] == 'money' %>
  22 + <li><b><%= s_('shopping_cart|Change') %>: </b><%= @order.payment_data[:change] %></li>
  23 + <% end %>
22 <% end %> 24 <% end %>
23 25
24 <% if !@order.consumer_delivery_data[:address].blank? || !@order.consumer_delivery_data[:city].blank? || !@order.consumer_delivery_data[:zip_code].blank? || !@order.consumer_delivery_data[:district].blank? || !@order.consumer_delivery_data[:address_reference].blank? %> 26 <% if !@order.consumer_delivery_data[:address].blank? || !@order.consumer_delivery_data[:city].blank? || !@order.consumer_delivery_data[:zip_code].blank? || !@order.consumer_delivery_data[:district].blank? || !@order.consumer_delivery_data[:address_reference].blank? %>
@@ -51,7 +53,7 @@ @@ -51,7 +53,7 @@
51 </ul> 53 </ul>
52 54
53 <p><%=_('And here are the items bought by this customer:')%></p> 55 <p><%=_('And here are the items bought by this customer:')%></p>
54 - <%= items_table(@items, @order.profile, @order.supplier_delivery, true) %> 56 + <%= items_table(@items, @order.supplier_delivery, true) %>
55 <p> 57 <p>
56 --<br/> 58 --<br/>
57 <%=_('If there are any problems with this email contact the admin of %s.') % @environment.name %> 59 <%=_('If there are any problems with this email contact the admin of %s.') % @environment.name %>
test/fixtures/environments.yml
@@ -3,6 +3,7 @@ colivre_net: @@ -3,6 +3,7 @@ colivre_net:
3 id: 1 3 id: 1
4 name: 'Colivre.net' 4 name: 'Colivre.net'
5 contact_email: 'colivre@localhost.localdomain' 5 contact_email: 'colivre@localhost.localdomain'
  6 + noreply_email: 'noreply@localhost.localdomain'
6 is_default: true 7 is_default: true
7 theme: 'noosfero' 8 theme: 'noosfero'
8 anhetegua_net: 9 anhetegua_net:
@@ -10,3 +11,4 @@ anhetegua_net: @@ -10,3 +11,4 @@ anhetegua_net:
10 name: 'Anheteguá' 11 name: 'Anheteguá'
11 is_default: false 12 is_default: false
12 contact_email: 'anhetegua@localhost.localdomain' 13 contact_email: 'anhetegua@localhost.localdomain'
  14 + noreply_email: 'noreply@localhost.localdomain'