Commit 8838cfb0864458dc7efd834d026a63ff12a17f32
1 parent
5348ee30
Exists in
master
and in
29 other branches
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
Showing
10 changed files
with
130 additions
and
137 deletions
Show diff stats
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 < ApplicationController | @@ -5,6 +5,7 @@ class ManageProductsController < 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 < ApplicationController | @@ -56,5 +57,39 @@ class ManageProductsController < 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/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/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 < Test::Unit::TestCase | @@ -198,4 +198,52 @@ class ManageProductsControllerTest < 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 |