Commit 8838cfb0864458dc7efd834d026a63ff12a17f32

Authored by JoenioCosta
1 parent 5348ee30

ActionItem328: move consumed_products actions to manage_products


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1888 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/my_profile/consumed_products_controller.rb
@@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
1 -class ConsumedProductsController < ApplicationController  
2 - needs_profile  
3 -  
4 - protect 'manage_products', :profile  
5 -  
6 - def index  
7 - @consumptions = @profile.consumptions  
8 - @product_categories = @profile.consumed_product_categories  
9 - end  
10 -  
11 - def new  
12 - @consumption = @profile.consumptions.build(params[:consumption])  
13 - if request.post?  
14 - if @consumption.save  
15 - flash[:notice] = _('Product succesfully created')  
16 - redirect_to :action => 'index'  
17 - else  
18 - flash[:notice] = _('Could not create the product')  
19 - end  
20 - end  
21 - end  
22 -  
23 - def destroy  
24 - @consumption = @profile.consumptions.find(params[:id])  
25 - if @consumption.destroy  
26 - flash[:notice] = _('Product succesfully removed')  
27 - else  
28 - flash[:notice] = _('Could not remove the product')  
29 - end  
30 - redirect_back_or_default :action => 'index'  
31 - end  
32 -  
33 -end  
app/controllers/my_profile/manage_products_controller.rb
@@ -5,6 +5,7 @@ class ManageProductsController &lt; ApplicationController @@ -5,6 +5,7 @@ class ManageProductsController &lt; ApplicationController
5 5
6 def index 6 def index
7 @products = @profile.products 7 @products = @profile.products
  8 + @consumptions = @profile.consumptions
8 end 9 end
9 10
10 def show 11 def show
@@ -56,5 +57,39 @@ class ManageProductsController &lt; ApplicationController @@ -56,5 +57,39 @@ class ManageProductsController &lt; ApplicationController
56 @categories = @current_category.children 57 @categories = @current_category.children
57 render :partial => 'subcategories' 58 render :partial => 'subcategories'
58 end 59 end
  60 +
  61 + def new_consumption
  62 + @consumption = @profile.consumptions.build(params[:consumption])
  63 + if request.post?
  64 + if @consumption.save
  65 + flash[:notice] = _('Product succesfully created')
  66 + redirect_to :action => 'index'
  67 + else
  68 + flash[:notice] = _('Could not create the product')
  69 + end
  70 + end
  71 + end
  72 +
  73 + def destroy_consumption
  74 + @consumption = @profile.consumptions.find(params[:id])
  75 + if @consumption.destroy
  76 + flash[:notice] = _('Product succesfully removed')
  77 + else
  78 + flash[:notice] = _('Could not remove the product')
  79 + end
  80 + redirect_back_or_default :action => 'index'
  81 + end
59 82
  83 + def edit_consumption
  84 + @consumption = @profile.consumptions.find(params[:id])
  85 + if request.post?
  86 + if @consumption.update_attributes(params[:consumption])
  87 + flash[:notice] = _('Consumed product succesfully updated')
  88 + redirect_back_or_default :action => 'index'
  89 + else
  90 + flash[:notice] = _('Could not update the consumed product')
  91 + end
  92 + end
  93 + end
  94 +
60 end 95 end
app/views/consumed_products/index.rhtml
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -<h2> <%=_('Listing consumed products') %> </h2>  
2 -  
3 -<p> <%= link_to _('Add product'), :action => 'new' %> </p>  
4 -  
5 -<% @consumptions.each do |consumption| %>  
6 - <p> <b> <%= link_to_category(consumption.product_category) %> </b>  
7 - <%= link_to _('remove'), { :action => 'destroy', :id => consumption },  
8 - :confirm => _('Are you sure, you want to remove this product from your list') %>  
9 - <pre><%= consumption.aditional_specifications %></pre> </p>  
10 -<% end %>  
11 -  
12 -<%= link_to_myprofile(_('Back'), {}, @profile.identifier)%>  
app/views/consumed_products/new.rhtml
@@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
1 -<h2><%= _('Add product') %></h2>  
2 -  
3 -<%= error_messages_for :consumption %>  
4 -  
5 -<% form_for :consumption, @consumption do |f| %>  
6 - <p>  
7 - <%= _('Product:') %>  
8 - <span class="formfield"> <%= f.select "product_category_id", ProductCategory.find(:all).map{|pc| [pc.name, pc.id]} %> </span>  
9 - </p>  
10 - <p>  
11 - <%= _('Aditional specifications:') %> <br />  
12 - <span class="formfield"> <%= f.text_area "aditional_specifications", :rows => 5 %> </span>  
13 - </p>  
14 - <% button_bar do %>  
15 - <%= submit_button('add', _('Add product'), :cancel => {:action => 'index'}) %>  
16 - <% end %>  
17 -<% end %>  
app/views/manage_products/edit_consumption.rhtml 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<h2><%= _("Editing %s") % @consumption.product_category.name %></h2>
  2 +
  3 +<%= render :partial => 'form_consumption', :locals => {:action => 'edit_consumption'} %>
app/views/manage_products/index.rhtml
1 <h2> <%=_('Listing products and services') %> </h2> 1 <h2> <%=_('Listing products and services') %> </h2>
2 2
  3 +<table>
  4 + <tr>
  5 + <th><%= _('Product') %></th>
  6 + <th><%= _('Price') %></th>
  7 + <th><%= _('Actions') %></th>
  8 + </tr>
  9 + <% @products.each do |product| %>
  10 + <tr>
  11 + <td><strong><%= link_to product.name, :action => 'show', :id => product %></strong></td>
  12 + <td><%= product.price %></td>
  13 + <td>
  14 + <%= button :edit, _('Edit'), :action => 'edit', :id => product %>
  15 + <%= button :delete, _('Destroy'), :action => 'destroy', :id => product %>
  16 + </td>
  17 + </tr>
  18 + <% end %>
  19 +</table>
  20 +
3 <p> <%= link_to _('New product or service'), :action => 'new' %> </p> 21 <p> <%= link_to _('New product or service'), :action => 'new' %> </p>
4 22
5 -<% @products.each do |product| %>  
6 - <p> <b> <%= link_to product.name, :action => 'show', :id => product %> </b>  
7 - <%= _('Price:') %> <%= product.price %>  
8 - <%= link_to _('edit'), :action => 'edit', :id => product %>  
9 - <%= link_to _('destroy'), :action => 'destroy', :id => product %> </p>  
10 -<% end %> 23 +<h3> <%=_('Listing consumed products') %> </h3>
  24 +
  25 +<table>
  26 + <tr>
  27 + <th><%= _('Consumed product') %></th>
  28 + <th><%= _('Actions') %></th>
  29 + </tr>
  30 + <% @consumptions.each do |consumption| %>
  31 + <tr>
  32 + <td>
  33 + <strong><%= link_to_category(consumption.product_category) %></strong>
  34 + <br/>
  35 + <em><%= consumption.aditional_specifications %></em>
  36 + </td>
  37 + <td>
  38 + <%= button :edit, _('Edit'), :action => 'edit_consumption', :id => consumption %>
  39 + <%= button :delete, _('Remove'), { :action => 'destroy_consumption', :id => consumption }, :confirm => _('Are you sure, you want to remove this product from your list') %>
  40 + </td>
  41 + </tr>
  42 + <% end %>
  43 +</table>
  44 +
  45 +<p> <%= link_to _('Add cunsumed product'), :action => 'new_consumption' %> </p>
11 46
12 <%= link_to_myprofile(_('Back'), {}, @profile.identifier) %> 47 <%= link_to_myprofile(_('Back'), {}, @profile.identifier) %>
app/views/manage_products/new_consumption.rhtml 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<h2><%= _('Add consumed product') %></h2>
  2 +
  3 +<%= render :partial => 'form_consumption', :locals => {:action => 'new_consumption'} %>
app/views/profile_editor/index.rhtml
@@ -20,8 +20,6 @@ @@ -20,8 +20,6 @@
20 20
21 <%= file_manager_button(_('Manage Members'), 'icons-app/members.png', :controller => 'profile_members') if profile.organization? && user.has_permission?(:manage_memberships, profile) %> 21 <%= file_manager_button(_('Manage Members'), 'icons-app/members.png', :controller => 'profile_members') if profile.organization? && user.has_permission?(:manage_memberships, profile) %>
22 22
23 - <%= file_manager_button(_('Consumed Products'), 'icons-app/consumed_product.png', :controller => 'consumed_products') if profile.enterprise? %>  
24 -  
25 <%= file_manager_button(_('Manage Products and Services'), 'icons-app/products.png', :controller => 'manage_products') if profile.enterprise? %> 23 <%= file_manager_button(_('Manage Products and Services'), 'icons-app/products.png', :controller => 'manage_products') if profile.enterprise? %>
26 24
27 <%= file_manager_button(_('Enterprise Validation'), 'icons-app/validation.png', :controller => 'enterprise_validation') if profile.is_validation_entity? %> 25 <%= file_manager_button(_('Enterprise Validation'), 'icons-app/validation.png', :controller => 'enterprise_validation') if profile.is_validation_entity? %>
test/functional/consumed_products_controller_test.rb
@@ -1,67 +0,0 @@ @@ -1,67 +0,0 @@
1 -require File.dirname(__FILE__) + '/../test_helper'  
2 -require 'consumed_products_controller'  
3 -  
4 -# Re-raise errors caught by the controller.  
5 -class ConsumedProductsController; def rescue_action(e) raise e end; end  
6 -  
7 -class ConsumedProductsControllerTest < Test::Unit::TestCase  
8 -  
9 - all_fixtures  
10 -  
11 - def setup  
12 - @controller = ConsumedProductsController.new  
13 - @request = ActionController::TestRequest.new  
14 - @response = ActionController::TestResponse.new  
15 -  
16 - @profile = create_user('testinguser').person  
17 - end  
18 - attr_reader :profile  
19 -  
20 - def test_local_files_reference  
21 - assert_local_files_reference :get, :index, :profile => profile.identifier  
22 - end  
23 -  
24 - def test_valid_xhtml  
25 - assert_valid_xhtml  
26 - end  
27 -  
28 - should 'display new form' do  
29 - login_as(profile.identifier)  
30 - get :new, :profile => profile.identifier  
31 - assert_tag :tag => 'h2', :content => 'Add product'  
32 - end  
33 -  
34 - should 'create product' do  
35 - login_as(profile.identifier)  
36 - product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)  
37 - assert_difference Consumption, :count do  
38 - post :new, :profile => profile.identifier, :consumption => { :product_category_id => product_category.id }  
39 - end  
40 - end  
41 -  
42 - should 'display list of products' do  
43 - login_as(profile.identifier)  
44 - product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)  
45 - profile.consumptions.create!(:product_category_id => product_category.id, :aditional_specifications => 'extra info')  
46 - get :index, :profile => profile.identifier  
47 - assert_tag :tag => 'pre', :content => 'extra info'  
48 - end  
49 -  
50 - should 'filter html from specifications' do  
51 - login_as(profile.identifier)  
52 - product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)  
53 - post :new, :profile => profile.identifier,  
54 - :consumption => { :product_category_id => product_category.id, :aditional_specifications => 'extra <b>info</b>' }  
55 - assert_sanitized assigns(:consumption).aditional_specifications  
56 - end  
57 -  
58 - should 'destroy product' do  
59 - login_as(profile.identifier)  
60 - product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)  
61 - product = profile.consumptions.create!(:product_category_id => product_category.id, :aditional_specifications => 'extra info')  
62 - assert_difference Consumption, :count, -1 do  
63 - post :destroy, :profile => profile.identifier, :id => product.id  
64 - end  
65 - end  
66 -  
67 -end  
test/functional/manage_products_controller_test.rb
@@ -198,4 +198,52 @@ class ManageProductsControllerTest &lt; Test::Unit::TestCase @@ -198,4 +198,52 @@ class ManageProductsControllerTest &lt; Test::Unit::TestCase
198 assert_sanitized assigns(:product).description 198 assert_sanitized assigns(:product).description
199 end 199 end
200 200
  201 + should 'display new consumption form' do
  202 + get :new_consumption, :profile => @enterprise.identifier
  203 + assert_tag :tag => 'h2', :content => 'Add consumed product'
  204 + end
  205 +
  206 + should 'create consumption product' do
  207 + product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)
  208 + assert_difference Consumption, :count do
  209 + post :new_consumption, :profile => @enterprise.identifier, :consumption => { :product_category_id => product_category.id }
  210 + end
  211 + end
  212 +
  213 + should 'display list of consumption products' do
  214 + product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)
  215 + @enterprise.consumptions.create!(:product_category_id => product_category.id, :aditional_specifications => 'extra info')
  216 + get :index, :profile => @enterprise.identifier
  217 + assert_tag :tag => 'em', :content => 'extra info'
  218 + end
  219 +
  220 + should 'filter html from consumption specifications' do
  221 + product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)
  222 + post :new_consumption, :profile => @enterprise.identifier,
  223 + :consumption => { :product_category_id => product_category.id, :aditional_specifications => 'extra <b>info</b>' }
  224 + assert_sanitized assigns(:consumption).aditional_specifications
  225 + end
  226 +
  227 + should 'destroy consumption product' do
  228 + product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)
  229 + product = @enterprise.consumptions.create!(:product_category_id => product_category.id, :aditional_specifications => 'extra info')
  230 + assert_difference Consumption, :count, -1 do
  231 + post :destroy_consumption, :profile => @enterprise.identifier, :id => product.id
  232 + end
  233 + end
  234 +
  235 + should 'display edit consumption form' do
  236 + product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)
  237 + product = @enterprise.consumptions.create!(:product_category_id => product_category.id, :aditional_specifications => 'extra info')
  238 + get :edit_consumption, :profile => @enterprise.identifier, :id => product
  239 + assert_tag :tag => 'h2', :content => 'Editing Food'
  240 + end
  241 +
  242 + should 'update consumption product' do
  243 + product_category = ProductCategory.create!(:name => 'Food', :environment => Environment.default)
  244 + product = @enterprise.consumptions.create!(:product_category_id => product_category.id, :aditional_specifications => 'extra info')
  245 + post :edit_consumption, :profile => @enterprise.identifier, :id => product, :consumption => { :aditional_specifications => 'new extra info' }
  246 + assert_equal 'new extra info', @enterprise.consumptions.find(product.reload.id).aditional_specifications
  247 + end
  248 +
201 end 249 end