From bfce4eb13212734b675c4fd07f23ecca6946cb3e Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Mon, 19 Mar 2012 17:32:26 -0300 Subject: [PATCH] [stoa] Fixing plugin routes --- lib/noosfero/plugin/routes.rb | 2 +- plugins/bsc/controllers/bsc_plugin_admin_controller.rb | 37 +++++++++++++++++++++++++++++++++++++ plugins/bsc/controllers/bsc_plugin_environment_controller.rb | 37 ------------------------------------- plugins/bsc/lib/bsc_plugin.rb | 4 ++-- plugins/bsc/test/functional/bsc_plugin_admin_controller_test.rb | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ plugins/bsc/test/functional/bsc_plugin_environment_controller_test.rb | 82 ---------------------------------------------------------------------------------- plugins/bsc/views/bsc_plugin_admin/new.html.erb | 11 +++++++++++ plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb | 12 ++++++++++++ plugins/bsc/views/bsc_plugin_environment/new.html.erb | 11 ----------- plugins/bsc/views/bsc_plugin_environment/validate_enterprises.html.erb | 12 ------------ 10 files changed, 145 insertions(+), 145 deletions(-) create mode 100644 plugins/bsc/controllers/bsc_plugin_admin_controller.rb delete mode 100644 plugins/bsc/controllers/bsc_plugin_environment_controller.rb create mode 100644 plugins/bsc/test/functional/bsc_plugin_admin_controller_test.rb delete mode 100644 plugins/bsc/test/functional/bsc_plugin_environment_controller_test.rb create mode 100644 plugins/bsc/views/bsc_plugin_admin/new.html.erb create mode 100644 plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb delete mode 100644 plugins/bsc/views/bsc_plugin_environment/new.html.erb delete mode 100644 plugins/bsc/views/bsc_plugin_environment/validate_enterprises.html.erb diff --git a/lib/noosfero/plugin/routes.rb b/lib/noosfero/plugin/routes.rb index 49f1095..6f0af82 100644 --- a/lib/noosfero/plugin/routes.rb +++ b/lib/noosfero/plugin/routes.rb @@ -1,6 +1,6 @@ Dir.glob(File.join(Rails.root, 'config', 'plugins', '*', 'controllers')) do |dir| plugin_name = File.basename(File.dirname(dir)) - map.connect 'plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_environment' + map.connect 'plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin' map.connect 'profile/:profile/plugins/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_profile' map.connect 'myprofile/:profile/plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_myprofile' map.connect 'admin/plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_admin' diff --git a/plugins/bsc/controllers/bsc_plugin_admin_controller.rb b/plugins/bsc/controllers/bsc_plugin_admin_controller.rb new file mode 100644 index 0000000..c13366d --- /dev/null +++ b/plugins/bsc/controllers/bsc_plugin_admin_controller.rb @@ -0,0 +1,37 @@ +class BscPluginAdminController < AdminController + + include BscPlugin::BscHelper + + def new + @bsc = BscPlugin::Bsc.new(params[:profile_data]) + if request.post? && @bsc.valid? + @bsc.user = current_user + @bsc.save! + @bsc.add_admin(user) + session[:notice] = _('Your Bsc was created.') + redirect_to :controller => 'profile_editor', :profile => @bsc.identifier + end + end + + def save_validations + enterprises = [Enterprise.find(params[:q].split(','))].flatten + + begin + enterprises.each { |enterprise| enterprise.validated = true ; enterprise.save! } + session[:notice] = _('Enterprises validated.') + redirect_to :controller => 'admin_panel' + rescue Exception => ex + session[:notice] = _('Enterprise validations couldn\'t be saved.') + logger.info ex + redirect_to :action => 'validate_enterprises' + end + end + + def search_enterprise + render :text => Enterprise.not_validated.find(:all, :conditions => ["type <> 'BscPlugin::Bsc' AND (name LIKE ? OR identifier LIKE ?)", "%#{params[:q]}%", "%#{params[:q]}%"]). + map {|enterprise| {:id => enterprise.id, :name => enterprise.name} }. + to_json + end + +end + diff --git a/plugins/bsc/controllers/bsc_plugin_environment_controller.rb b/plugins/bsc/controllers/bsc_plugin_environment_controller.rb deleted file mode 100644 index bc442ad..0000000 --- a/plugins/bsc/controllers/bsc_plugin_environment_controller.rb +++ /dev/null @@ -1,37 +0,0 @@ -class BscPluginEnvironmentController < AdminController - - include BscPlugin::BscHelper - - def new - @bsc = BscPlugin::Bsc.new(params[:profile_data]) - if request.post? && @bsc.valid? - @bsc.user = current_user - @bsc.save! - @bsc.add_admin(user) - session[:notice] = _('Your Bsc was created.') - redirect_to :controller => 'profile_editor', :profile => @bsc.identifier - end - end - - def save_validations - enterprises = [Enterprise.find(params[:q].split(','))].flatten - - begin - enterprises.each { |enterprise| enterprise.validated = true ; enterprise.save! } - session[:notice] = _('Enterprises validated.') - redirect_to :controller => 'admin_panel' - rescue Exception => ex - session[:notice] = _('Enterprise validations couldn\'t be saved.') - logger.info ex - redirect_to :action => 'validate_enterprises' - end - end - - def search_enterprise - render :text => Enterprise.not_validated.find(:all, :conditions => ["type <> 'BscPlugin::Bsc' AND (name LIKE ? OR identifier LIKE ?)", "%#{params[:q]}%", "%#{params[:q]}%"]). - map {|enterprise| {:id => enterprise.id, :name => enterprise.name} }. - to_json - end - -end - diff --git a/plugins/bsc/lib/bsc_plugin.rb b/plugins/bsc/lib/bsc_plugin.rb index b40e55a..6268302 100644 --- a/plugins/bsc/lib/bsc_plugin.rb +++ b/plugins/bsc/lib/bsc_plugin.rb @@ -14,8 +14,8 @@ class BscPlugin < Noosfero::Plugin end def admin_panel_links - [{:title => _('Create Bsc'), :url => {:controller => 'bsc_plugin_environment', :action => 'new'}}, - {:title => _('Validate Enterprises'), :url => {:controller => 'bsc_plugin_environment', :action => 'validate_enterprises'}} ] + [{:title => _('Create Bsc'), :url => {:controller => 'bsc_plugin_admin', :action => 'new'}}, + {:title => _('Validate Enterprises'), :url => {:controller => 'bsc_plugin_admin', :action => 'validate_enterprises'}} ] end def control_panel_buttons diff --git a/plugins/bsc/test/functional/bsc_plugin_admin_controller_test.rb b/plugins/bsc/test/functional/bsc_plugin_admin_controller_test.rb new file mode 100644 index 0000000..1d75bb3 --- /dev/null +++ b/plugins/bsc/test/functional/bsc_plugin_admin_controller_test.rb @@ -0,0 +1,82 @@ +require File.dirname(__FILE__) + '/../../../../test/test_helper' +require File.dirname(__FILE__) + '/../../controllers/bsc_plugin_admin_controller' +require File.dirname(__FILE__) + '/../../../../app/models/uploaded_file' + +# Re-raise errors caught by the controller. +class BscPluginAdminController; def rescue_action(e) raise e end; end + +class BscPluginAdminControllerTest < ActionController::TestCase + + VALID_CNPJ = '94.132.024/0001-48' + + def setup + @controller = BscPluginAdminController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + user_login = create_admin_user(Environment.default) + login_as(user_login) + @admin = User[user_login].person + e = Environment.default + e.enabled_plugins = ['BscPlugin'] + e.save! + end + + attr_accessor :admin + + should 'create a new bsc' do + assert_difference BscPlugin::Bsc, :count, 1 do + post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} + end + + assert_redirected_to :controller => 'profile_editor', :profile => 'sample-bsc' + end + + should 'not create an invalid bsc' do + assert_difference BscPlugin::Bsc, :count, 0 do + post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => '29837492304'} + end + + assert_response 200 + end + + should 'set the current user as the bsc admin' do + name = 'Sample Bsc' + post :new, :profile_data => {:business_name => name, :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} + bsc = BscPlugin::Bsc.find_by_name(name) + assert_includes bsc.admins, admin + end + + should 'list correct enterprises on search' do + # Should list if: not validated AND (name matches OR identifier matches) AND not bsc + e1 = Enterprise.create!(:name => 'Sample Enterprise 1', :identifier => 'bli', :validated => false) + e2 = Enterprise.create!(:name => 'Bla', :identifier => 'sample-enterprise-6', :validated => false) + e3 = Enterprise.create!(:name => 'Blo', :identifier => 'blo', :validated => false) + e4 = BscPlugin::Bsc.create!(:business_name => "Sample Bsc", :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ, :validated => false) + e5 = Enterprise.create!(:name => 'Sample Enterprise 5', :identifier => 'sample-enterprise-5') + e5.validated = true + e5.save! + + get :search_enterprise, :q => 'sampl' + + assert_match /#{e1.name}/, @response.body + assert_match /#{e2.name}/, @response.body + assert_no_match /#{e3.name}/, @response.body + assert_no_match /#{e4.name}/, @response.body + assert_no_match /#{e5.name}/, @response.body + end + + should 'save validations' do + e1 = fast_create(Enterprise, :validated => false) + e2 = fast_create(Enterprise, :validated => false) + e3 = fast_create(Enterprise, :validated => false) + + post :save_validations, :q => "#{e1.id},#{e2.id}" + e1.reload + e2.reload + e3.reload + + assert e1.validated + assert e2.validated + assert !e3.validated + end +end diff --git a/plugins/bsc/test/functional/bsc_plugin_environment_controller_test.rb b/plugins/bsc/test/functional/bsc_plugin_environment_controller_test.rb deleted file mode 100644 index bbb7b86..0000000 --- a/plugins/bsc/test/functional/bsc_plugin_environment_controller_test.rb +++ /dev/null @@ -1,82 +0,0 @@ -require File.dirname(__FILE__) + '/../../../../test/test_helper' -require File.dirname(__FILE__) + '/../../controllers/bsc_plugin_environment_controller' -require File.dirname(__FILE__) + '/../../../../app/models/uploaded_file' - -# Re-raise errors caught by the controller. -class BscPluginEnvironmentController; def rescue_action(e) raise e end; end - -class BscPluginEnvironmentControllerTest < ActionController::TestCase - - VALID_CNPJ = '94.132.024/0001-48' - - def setup - @controller = BscPluginEnvironmentController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - user_login = create_admin_user(Environment.default) - login_as(user_login) - @admin = User[user_login].person - e = Environment.default - e.enabled_plugins = ['BscPlugin'] - e.save! - end - - attr_accessor :admin - - should 'create a new bsc' do - assert_difference BscPlugin::Bsc, :count, 1 do - post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} - end - - assert_redirected_to :controller => 'profile_editor', :profile => 'sample-bsc' - end - - should 'not create an invalid bsc' do - assert_difference BscPlugin::Bsc, :count, 0 do - post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => '29837492304'} - end - - assert_response 200 - end - - should 'set the current user as the bsc admin' do - name = 'Sample Bsc' - post :new, :profile_data => {:business_name => name, :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} - bsc = BscPlugin::Bsc.find_by_name(name) - assert_includes bsc.admins, admin - end - - should 'list correct enterprises on search' do - # Should list if: not validated AND (name matches OR identifier matches) AND not bsc - e1 = Enterprise.create!(:name => 'Sample Enterprise 1', :identifier => 'bli', :validated => false) - e2 = Enterprise.create!(:name => 'Bla', :identifier => 'sample-enterprise-6', :validated => false) - e3 = Enterprise.create!(:name => 'Blo', :identifier => 'blo', :validated => false) - e4 = BscPlugin::Bsc.create!(:business_name => "Sample Bsc", :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ, :validated => false) - e5 = Enterprise.create!(:name => 'Sample Enterprise 5', :identifier => 'sample-enterprise-5') - e5.validated = true - e5.save! - - get :search_enterprise, :q => 'sampl' - - assert_match /#{e1.name}/, @response.body - assert_match /#{e2.name}/, @response.body - assert_no_match /#{e3.name}/, @response.body - assert_no_match /#{e4.name}/, @response.body - assert_no_match /#{e5.name}/, @response.body - end - - should 'save validations' do - e1 = fast_create(Enterprise, :validated => false) - e2 = fast_create(Enterprise, :validated => false) - e3 = fast_create(Enterprise, :validated => false) - - post :save_validations, :q => "#{e1.id},#{e2.id}" - e1.reload - e2.reload - e3.reload - - assert e1.validated - assert e2.validated - assert !e3.validated - end -end diff --git a/plugins/bsc/views/bsc_plugin_admin/new.html.erb b/plugins/bsc/views/bsc_plugin_admin/new.html.erb new file mode 100644 index 0000000..05154b5 --- /dev/null +++ b/plugins/bsc/views/bsc_plugin_admin/new.html.erb @@ -0,0 +1,11 @@ +<%= error_messages_for :bsc %> +

<%= _('BSC registration') %>

+ +<% labelled_form_for :profile_data, @bsc do |f| %> + <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> + + <% button_bar do %> + <%= submit_button('save', _('Save')) %> + <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'}) %> + <% end %> +<% end %> diff --git a/plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb b/plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb new file mode 100644 index 0000000..57c04f9 --- /dev/null +++ b/plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb @@ -0,0 +1,12 @@ +

<%= _('Validate enterprises') %>

+ +<% form_tag :action => 'save_validations' do %> + <%= token_input_field_tag(:q, 'search-enterprises', {:action => 'search_enterprise'}, + { :hint_text => _('Type in a search term for enterprise'), + :focus => true }) %> + + <% button_bar do %> + <%= submit_button('save', _('Save'))%> + <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'})%> + <% end %> +<% end %> diff --git a/plugins/bsc/views/bsc_plugin_environment/new.html.erb b/plugins/bsc/views/bsc_plugin_environment/new.html.erb deleted file mode 100644 index 05154b5..0000000 --- a/plugins/bsc/views/bsc_plugin_environment/new.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -<%= error_messages_for :bsc %> -

<%= _('BSC registration') %>

- -<% labelled_form_for :profile_data, @bsc do |f| %> - <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> - - <% button_bar do %> - <%= submit_button('save', _('Save')) %> - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'}) %> - <% end %> -<% end %> diff --git a/plugins/bsc/views/bsc_plugin_environment/validate_enterprises.html.erb b/plugins/bsc/views/bsc_plugin_environment/validate_enterprises.html.erb deleted file mode 100644 index 57c04f9..0000000 --- a/plugins/bsc/views/bsc_plugin_environment/validate_enterprises.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -

<%= _('Validate enterprises') %>

- -<% form_tag :action => 'save_validations' do %> - <%= token_input_field_tag(:q, 'search-enterprises', {:action => 'search_enterprise'}, - { :hint_text => _('Type in a search term for enterprise'), - :focus => true }) %> - - <% button_bar do %> - <%= submit_button('save', _('Save'))%> - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'})%> - <% end %> -<% end %> -- libgit2 0.21.2