Commit 808df810fb7925da44e52ca8e97a11294b6b8921

Authored by Daniela Feitosa
2 parents 2db73350 dbf169ee

Merge commit 'refs/merge-requests/177' of git://gitorious.org/noosfero/noosfero …

…into merge-requests/177
plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
... ... @@ -33,9 +33,9 @@ class ShoppingCartPluginMyprofileController < MyProfileController
33 33  
34 34 @products = {}
35 35 @orders.each do |order|
36   - order.products_list.each do |id, qp|
37   - @products[id] ||= 0
38   - @products[id] += qp[:quantity]
  36 + order.products_list.each do |id, qp|
  37 + @products[id] ||= ShoppingCartPlugin::LineItem.new(id, qp[:name])
  38 + @products[id].quantity += qp[:quantity]
39 39 end
40 40 end
41 41 end
... ...
plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb
... ... @@ -228,7 +228,8 @@ class ShoppingCartPluginProfileController < ProfileController
228 228 def register_order(custumer, items)
229 229 new_items = {}
230 230 items.each do |id, quantity|
231   - new_items[id] = {:quantity => quantity, :price => Product.find(id).price}
  231 + product = Product.find(id)
  232 + new_items[id] = {:quantity => quantity, :price => product.price, :name => product.name}
232 233 end
233 234 ShoppingCartPlugin::PurchaseOrder.create!(
234 235 :seller => profile,
... ...
plugins/shopping_cart/lib/shopping_cart_plugin/line_item.rb 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +class ShoppingCartPlugin::LineItem
  2 +
  3 + attr_accessor :product_id, :quantity
  4 +
  5 + def initialize(product_id, name)
  6 + @product_id = product_id
  7 + @name = name
  8 + @quantity = 0
  9 + end
  10 +
  11 + def product
  12 + @product ||= Product.find_by_id(product_id)
  13 + end
  14 +
  15 + def name
  16 + product && product.name || @name
  17 + end
  18 +
  19 + def ==(other)
  20 + self.product == other.product && self.name == other.name && self.quantity == other.quantity
  21 + end
  22 +
  23 +end
... ...
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
... ... @@ -77,11 +77,11 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
77 77 end
78 78  
79 79 should 'group filtered orders products and quantities' do
80   - p1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1)
81   - p2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2)
82   - p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3)
83   - po1_products = {p1.id => {:quantity => 1, :price => p1.price}, p2.id => {:quantity => 2, :price => p2.price }}
84   - po2_products = {p2.id => {:quantity => 1, :price => p2.price}, p3.id => {:quantity => 2, :price => p3.price }}
  80 + p1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1, :name => 'p1')
  81 + p2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2, :name => 'p2')
  82 + p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3, :name => 'p3')
  83 + po1_products = {p1.id => {:quantity => 1, :price => p1.price, :name => p1.name}, p2.id => {:quantity => 2, :price => p2.price, :name => p2.name }}
  84 + po2_products = {p2.id => {:quantity => 1, :price => p2.price, :name => p2.name }, p3.id => {:quantity => 2, :price => p3.price, :name => p3.name}}
85 85 po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED)
86 86 po2 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po2_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED)
87 87  
... ... @@ -91,7 +91,13 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
91 91 :to => (Time.now + 1.day).strftime(TIME_FORMAT),
92 92 :filter_status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED
93 93  
94   - hash = {p1.id => 1, p2.id => 3, p3.id => 2}
  94 + lineitem1 = ShoppingCartPlugin::LineItem.new(p1.id, p1.name)
  95 + lineitem1.quantity = 1
  96 + lineitem2 = ShoppingCartPlugin::LineItem.new(p2.id, p2.name)
  97 + lineitem2.quantity = 3
  98 + lineitem3 = ShoppingCartPlugin::LineItem.new(p3.id, p3.name)
  99 + lineitem3.quantity = 2
  100 + hash = {p1.id => lineitem1, p2.id => lineitem2, p3.id => lineitem3}
95 101  
96 102 assert_equal hash, assigns(:products)
97 103 end
... ...
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb
... ... @@ -38,14 +38,14 @@
38 38 </ul>
39 39 <ul class="order-products">
40 40 <% order.products_list.each do |id, qp| %>
41   - <%
  41 + <%
42 42 begin
43 43 product = Product.find(id)
44 44 rescue
45 45 product = nil
46 46 end
47 47 %>
48   - <li><%= product ? link_to(product.name, product.url) : _("Pruduct unavailable")%>
  48 + <li><%= product ? link_to(product.name, product.url) : qp[:name]%>
49 49 &times; <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li>
50 50 <% end %>
51 51 </ul>
... ...
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb
... ... @@ -6,10 +6,10 @@
6 6 <th><%= _('Product') %></th>
7 7 <th><%= _('Quantity') %></th>
8 8 </tr>
9   - <% @products.each do |id, quantity|%>
  9 + <% @products.each do |id, item|%>
10 10 <tr>
11   - <td><%= link_to(Product.find(id).name, Product.find(id).url) %></td>
12   - <td style="text-align: center"><%= quantity %></td>
  11 + <td><%= item.product ? link_to(item.name, item.product.url) : item.name %></td>
  12 + <td style="text-align: center"><%= item.quantity %></td>
13 13 </tr>
14 14 <% end %>
15 15 </table>
... ...