diff --git a/lib/software_info.rb b/lib/software_info.rb index 0d3993a..ffe5364 100644 --- a/lib/software_info.rb +++ b/lib/software_info.rb @@ -13,15 +13,15 @@ class SoftwareInfo < ActiveRecord::Base DatabaseDescription ] - scope :search_by_query, lambda {|query = ""| + scope :search_by_query, lambda { |query = ""| filtered_query = query.gsub(/[\|\(\)\\\/\s\[\]'"*%&!:]/,' ').split.map{|w| w += ":*"}.join('|') search_fields = SoftwareInfo.pg_search_plugin_fields if query.empty? - SoftwareInfo.all + SoftwareInfo.joins(:community).where("profiles.visible = ?", true) else searchable_software_objects = SoftwareInfo.transform_list_in_methods_list(SEARCHABLE_SOFTWARE_CLASSES) - includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')") + includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')").where("profiles.visible = ?", true) end } diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index 809e1c1..94e5a26 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -214,6 +214,31 @@ class SearchControllerTest < ActionController::TestCase assert_not_includes assigns(:searches)[:software_infos][:results], software_one.community end + should "software_infos search return only enabled softwares" do + s1 = SoftwareInfo.first + s2 = SoftwareInfo.last + + # First get them all normally + get( + :software_infos, + :query => "software" + ) + + assert_includes assigns(:searches)[:software_infos][:results], s1.community + assert_includes assigns(:searches)[:software_infos][:results], s2.community + + s2.community.disable + + # Now it should not contain the disabled community + get( + :software_infos, + :query => "software" + ) + + assert_includes assigns(:searches)[:software_infos][:results], s1.community + assert_not_includes assigns(:searches)[:software_infos][:results], s2.community + end + private def create_software_categories -- libgit2 0.21.2