diff --git a/lib/mpog_software_plugin.rb b/lib/mpog_software_plugin.rb index 5e0d9ca..ba71fac 100644 --- a/lib/mpog_software_plugin.rb +++ b/lib/mpog_software_plugin.rb @@ -128,10 +128,7 @@ class MpogSoftwarePlugin < Noosfero::Plugin community_block = proc do results = [] if params[:type] == "Software" - softwares = SoftwareInfo.search(params[:name], params[:database_description][:id], - params[:programming_language][:id], params[:operating_system][:id], - params[:license_info][:id], params[:e_ping], params[:e_mag], params[:internacionalizable], - params[:icp_brasil], params[:e_arq], params[:software_categories]) + softwares = SoftwareInfo.search(params[:name]) communities = [] softwares.each do |s| communities << s.community diff --git a/lib/software_info.rb b/lib/software_info.rb index 633a314..c10f274 100644 --- a/lib/software_info.rb +++ b/lib/software_info.rb @@ -38,62 +38,10 @@ class SoftwareInfo < ActiveRecord::Base values << "%#{name}%" << "%#{name}%" end - unless database_description_id.blank? - like_sql << "software_databases.database_description_id = ? AND " - values << "#{database_description_id}" - end - - unless programming_language_id.blank? - like_sql << "software_languages.programming_language_id = ? AND " - values << "#{programming_language_id}" - end - - unless operating_system_name_id.blank? - like_sql << "operating_systems.operating_system_name_id = ? AND " - values << "#{operating_system_name_id}" - end - - unless license_info_id.blank? - like_sql << "license_info_id = ? AND " - values << "#{license_info_id}" - end - - unless internacionalizable.blank? - like_sql << "intern = ? AND " - values << "#{internacionalizable}" - end - - unless icp_brasil.blank? - like_sql << "icp_brasil = ? AND " - values << "#{icp_brasil}" - end - - unless e_ping.blank? - like_sql << "e_ping = ? AND " - values << "#{e_ping}" - end - - unless e_mag.blank? - like_sql << "e_mag = ? AND " - values << "#{e_mag}" - end - - unless e_arq.blank? - like_sql << "e_arq = ? AND " - values << "#{e_arq}" - end - - unless software_categories.blank? - software_categories = software_categories.gsub(' ', '').underscore - like_sql << "software_categories.#{software_categories} = ? AND " - values << "true" - end - like_sql = like_sql[0..like_sql.length-5] { - :joins => [:community, :software_databases, :software_languages, - :operating_systems, :software_categories], + :joins => [:community], :conditions=>[like_sql, *values] } } diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index f5ff6d7..a729ebe 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -105,190 +105,6 @@ class SearchControllerTest < ActionController::TestCase assert_includes assigns(:searches)[:communities][:results], software.community end - should "search for software by database" do - fields = software_fields - software = create_software fields - software.software_databases.clear() - software.software_databases << SoftwareDatabase.last - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", - "database_description"=>{"id"=>SoftwareDatabase.last.database_description.id}, - "programming_language"=>{"id"=>""}, "operating_system"=>{"id"=>""}, "software_categories"=>"", - "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search for software by programming language" do - fields = software_fields - software = create_software fields - software.software_languages.clear() - software.software_languages << SoftwareLanguage.last - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>SoftwareLanguage.last.programming_language.id}, - "operating_system"=>{"id"=>""}, "software_categories"=>"", - "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search for software by operating system" do - fields = software_fields - software = create_software fields - software.save! - software.operating_systems.clear() - software.operating_systems << OperatingSystem.last - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>OperatingSystemName.last.id}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search for software by software categories" do - fields = software_fields - software = create_software fields - software.software_categories.habitation = true - software.software_categories.save! - software.save - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"habitation", "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search for software by license info" do - fields = software_fields - software = create_software fields - software.license_info = LicenseInfo.last - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>LicenseInfo.last.id}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - - should "search for software by e_mag" do - fields = software_fields - software = create_software fields - software.e_mag = true - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"true", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - - should "search for software by e_ping" do - fields = software_fields - software = create_software fields - software.e_ping = true - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"true", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - - should "search for software by icp_brasil" do - fields = software_fields - software = create_software fields - software.icp_brasil = true - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"true", "e_arq"=>"", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search for software by e_arq" do - fields = software_fields - software = create_software fields - software.e_arq = true - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"true", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search for software by internacionalizable" do - fields = software_fields - software = create_software fields - software.intern = true - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"", "internacionalizable"=>"true", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - - should "search by e_arq and e_ping" do - fields = software_fields - software = create_software fields - software.e_arq = true - software.e_ping = true - software.save! - - params = {"type"=>"Software", "query"=>"", "name"=>"", "database_description"=>{"id"=>""}, - "programming_language"=>{"id"=>""}, - "operating_system"=>{"id"=>""}, - "software_categories"=>"", "license_info"=>{"id"=>""}, "e_ping"=>"true", "e_mag"=>"", "icp_brasil"=>"", "e_arq"=>"true", "internacionalizable"=>"", - "commit"=>"Search"} - get :communities, params - - assert_includes assigns(:searches)[:communities][:results], software.community - end - protected def create_user name, state, city, email diff --git a/views/search/search_forms/_software_fields.html.erb b/views/search/search_forms/_software_fields.html.erb index 51aff0c..8760440 100644 --- a/views/search/search_forms/_software_fields.html.erb +++ b/views/search/search_forms/_software_fields.html.erb @@ -1,141 +1,5 @@
<%= label_tag("name", _("Name"))%> | <%= text_field_tag(:name) %> |
<%= _("Database") %> | -- <%= collection_select(:database_description, :id, DatabaseDescription.all, :id, :name, :prompt=>_("Any")) %> - | -
<%= _("Programming Language") %> | -- <%= collection_select(:programming_language, :id, ProgrammingLanguage.all, :id, :name, :prompt=>_("Any")) %> - | -
<%= _("Operating System") %> | -- <%= collection_select(:operating_system, :id, OperatingSystemName.all, :id, :name, :prompt=>_("Any")) %> - | -
<%= _("Software Categories") %> | -- <%= select_tag("software_categories", (SoftwareCategoriesHelper.get_categories_as_options)) %> - | -
<%= _("License Used") %> | -- <%= collection_select(:license_info, :id, LicenseInfo.all, :id, :version, :prompt=>_("Any")) %> - | -
<%= _("Adherent to e-PING ?") %> | -- - - - - - | -
<%= _("Adherent to e-MAG ?") %> | -- - - - - - | -
<%= _("Adherent to ICP-Brasil ?") %> | -- - - - - - | -
<%= _("Adherent to e-ARQ ?") %> | -- - - - - - | -
<%= _("Internacionalizable ?") %> | -- - - - - - | -