Commit 3ae9703f17af8b4f2a05bdcd1706221bc2f7ba09

Authored by Luciano Prestes
1 parent 4eb9f4aa

Fix bugs on software search

- Fix software search ordination by only_softwares with
ajax
- Fix search by click on 'Filter' to use the 'show' and
the 'sort by'

Signed-off-by: Gabriel Silva <gabriel93.silva@gmail.com>
Signed-off-by: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>
Signed-off-by: Pedro de Lyra <pedrodelyra@gmail.com>
src/noosfero-spb/software_communities/features/use_report.feature
@@ -4,11 +4,13 @@ Feature: Use report @@ -4,11 +4,13 @@ Feature: Use report
4 to give my feedback about a software. 4 to give my feedback about a software.
5 5
6 Background: 6 Background:
  7 + Given "GovUserPlugin" plugin is enabled
7 Given "SoftwareCommunitiesPlugin" plugin is enabled 8 Given "SoftwareCommunitiesPlugin" plugin is enabled
8 Given "OrganizationRatings" plugin is enabled 9 Given "OrganizationRatings" plugin is enabled
9 And I am logged in as mpog_admin 10 And I am logged in as mpog_admin
10 And I go to /admin/plugins 11 And I go to /admin/plugins
11 And I check "SoftwareCommunitiesPlugin" 12 And I check "SoftwareCommunitiesPlugin"
  13 + And I check "GovUserPlugin"
12 And I press "Save changes" 14 And I press "Save changes"
13 And the following softwares 15 And the following softwares
14 | name | public_software | finality | 16 | name | public_software | finality |
@@ -21,7 +23,7 @@ Feature: Use report @@ -21,7 +23,7 @@ Feature: Use report
21 And I choose "Organization Ratings" 23 And I choose "Organization Ratings"
22 And I press "Add" 24 And I press "Add"
23 Then I should see "Report your experiences" 25 Then I should see "Report your experiences"
24 - 26 +
25 Scenario: Add Average Rating Block 27 Scenario: Add Average Rating Block
26 Given I go to Noosfero's control panel 28 Given I go to Noosfero's control panel
27 And I follow "Edit sideboxes" 29 And I follow "Edit sideboxes"
@@ -41,14 +43,19 @@ Feature: Use report @@ -41,14 +43,19 @@ Feature: Use report
41 43
42 @selenium 44 @selenium
43 Scenario: Validate Use Report fields format 45 Scenario: Validate Use Report fields format
44 - Given I go to Noosfero's control panel  
45 - Given I follow "Edit sideboxes" 46 + Given Institutions has initial default values on database
  47 + And the following public institutions
  48 + | name | acronym | country | state | city | cnpj | juridical_nature | governmental_power | governmental_sphere | corporate_name |
  49 + | Ministerio do Planejamento | MP | BR | Distrito Federal | Brasilia | 41.769.591/0001-43 | Autarquia | Judiciario | Federal | Ministerio do Planejamento |
  50 + And I go to Noosfero's control panel
  51 + And I follow "Edit sideboxes"
46 When I follow "Add a block" 52 When I follow "Add a block"
47 And I choose "Organization Ratings" 53 And I choose "Organization Ratings"
48 And I press "Add" 54 And I press "Add"
49 And I am on Noosfero's homepage 55 And I am on Noosfero's homepage
50 And I follow "Rate Community" 56 And I follow "Rate Community"
51 When I click on anything with selector "comments-additional-information" 57 When I click on anything with selector "comments-additional-information"
  58 + And I type in "Minis" in autocomplete list "#input_institution" and I choose "Ministerio do Planejamento"
52 And I fill in "people_benefited_tmp" with "123123" 59 And I fill in "people_benefited_tmp" with "123123"
53 And I fill in "saved_value_tmp" with "7654321" 60 And I fill in "saved_value_tmp" with "7654321"
54 And I press "Save" 61 And I press "Save"
src/noosfero-spb/software_communities/lib/ext/search_controller.rb
@@ -32,6 +32,7 @@ class SearchController @@ -32,6 +32,7 @@ class SearchController
32 results = filter_software_infos_list(&software_public_condition_block) 32 results = filter_software_infos_list(&software_public_condition_block)
33 @software_count = results.count 33 @software_count = results.count
34 results = results.paginate(:per_page => @per_page, :page => params[:page]) 34 results = results.paginate(:per_page => @per_page, :page => params[:page])
  35 +
35 @searches[@asset] = {:results => results} 36 @searches[@asset] = {:results => results}
36 @search = results 37 @search = results
37 38
@@ -92,7 +93,7 @@ class SearchController @@ -92,7 +93,7 @@ class SearchController
92 93
93 filtered_software_list = SoftwareInfo.search_by_query(params[:query], environment) 94 filtered_software_list = SoftwareInfo.search_by_query(params[:query], environment)
94 95
95 - if params[:only_softwares] 96 + if params[:only_softwares] && params[:only_softwares].any?{ |word| !word.blank? }
96 params[:only_softwares].collect!{ |software_name| software_name.to_slug } 97 params[:only_softwares].collect!{ |software_name| software_name.to_slug }
97 #FIX-ME: This query is not appropriate 98 #FIX-ME: This query is not appropriate
98 filtered_software_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) } 99 filtered_software_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) }
@@ -161,7 +162,7 @@ class SearchController @@ -161,7 +162,7 @@ class SearchController
161 def prepare_per_page 162 def prepare_per_page
162 return 15 if params[:software_display].nil? 163 return 15 if params[:software_display].nil?
163 164
164 - if params[:software_display] == "all" 165 + if params[:software_display].downcase == "all"
165 SoftwareInfo.count 166 SoftwareInfo.count
166 else 167 else
167 params[:software_display].to_i 168 params[:software_display].to_i
src/noosfero-spb/software_communities/public/views/search-software-catalog.js
@@ -52,6 +52,8 @@ modulejs.define(&#39;SearchSoftwareCatalog&#39;, [&#39;jquery&#39;, &#39;NoosferoRoot&#39;, &#39;SoftwareCat @@ -52,6 +52,8 @@ modulejs.define(&#39;SearchSoftwareCatalog&#39;, [&#39;jquery&#39;, &#39;NoosferoRoot&#39;, &#39;SoftwareCat
52 params.software_type = $("#public_software_radio_button").val(); 52 params.software_type = $("#public_software_radio_button").val();
53 } 53 }
54 54
  55 + params.only_softwares = $("#only_softwares_hidden").val().split(' ');
  56 +
55 return params; 57 return params;
56 } 58 }
57 59
src/noosfero-spb/software_communities/test/functional/search_controller_test.rb
@@ -218,6 +218,23 @@ class SearchControllerTest &lt; ActionController::TestCase @@ -218,6 +218,23 @@ class SearchControllerTest &lt; ActionController::TestCase
218 assert_not_includes assigns(:searches)[:software_infos][:results], software_one.community 218 assert_not_includes assigns(:searches)[:software_infos][:results], software_one.community
219 end 219 end
220 220
  221 + should "software_infos search return only the software in params order by Z-A" do
  222 + software_one = create_software_info("Software One", :acronym => "SFO", :finality => "Help")
  223 + software_two = create_software_info("Java", :acronym => "SFT", :finality => "Task")
  224 + software_three = create_software_info("Software Three", :acronym => "SFW", :finality => "Java")
  225 +
  226 + get(
  227 + :software_infos,
  228 + :only_softwares => ["software-three", "java"],
  229 + :sort => "desc"
  230 + )
  231 +
  232 + assert_equal assigns(:searches)[:software_infos][:results][0], software_three.community
  233 + assert_equal assigns(:searches)[:software_infos][:results][1], software_two.community
  234 + assert_not_includes assigns(:searches)[:software_infos][:results], software_one.community
  235 + end
  236 +
  237 +
221 should "software_infos search return only enabled softwares" do 238 should "software_infos search return only enabled softwares" do
222 s1 = SoftwareInfo.first 239 s1 = SoftwareInfo.first
223 s2 = SoftwareInfo.last 240 s2 = SoftwareInfo.last
src/noosfero-spb/software_communities/views/search/_software_search_form.html.erb
@@ -28,38 +28,39 @@ @@ -28,38 +28,39 @@
28 28
29 <%= submit_button(:search, _('Filter')) %> 29 <%= submit_button(:search, _('Filter')) %>
30 </div> 30 </div>
31 - <%= render :partial => 'search_form_extra_fields' %>  
32 - <%= render :partial => 'catalog_filter' %>  
33 - <% end %>  
34 - </div> 31 + <%= render :partial => 'search_form_extra_fields' %>
  32 + <%= render :partial => 'catalog_filter' %>
35 33
36 - <div id="catalog-display-options">  
37 - <div id="catalog-display-options-count">  
38 - <strong id="software-count"><%= "#{@software_count} Software(s)" %></strong>  
39 - </div>  
40 -  
41 - <div id="catalog-display-options-show-and-sort">  
42 - <div id="catalog-display-options-show">  
43 - <%= _('Show:') %>  
44 - <%= select_tag("software_display",  
45 - options_for_select(['15', '30', '90', 'All'], :selected=>params[:display])  
46 - ) %>  
47 - </div> 34 + <div id="catalog-display-options">
  35 + <div id="catalog-display-options-count">
  36 + <strong id="software-count"><%= "#{@software_count} Software(s)" %></strong>
  37 + </div>
48 38
49 - <div id="catalog-display-options-sort">  
50 - <%= _('Sort by:') %>  
51 - <%= select_tag("sort",  
52 - options_for_select(  
53 - [  
54 - [_("Name A-Z"), 'asc'],  
55 - [_("Name Z-A"), 'desc'],  
56 - [_("Relevance"), 'relevance'],  
57 - [_("Rating"), 'rating']  
58 - ], :selected=>params[:sort]) 39 + <div id="catalog-display-options-show-and-sort">
  40 + <div id="catalog-display-options-show">
  41 + <%= _('Show:') %>
  42 + <%= select_tag("software_display",
  43 + options_for_select(['15', '30', '90', 'All'], :selected=>params[:software_display])
59 ) %> 44 ) %>
  45 + </div>
  46 +
  47 + <div id="catalog-display-options-sort">
  48 + <%= _('Sort by:') %>
  49 + <%= select_tag("sort",
  50 + options_for_select(
  51 + [
  52 + [_("Name A-Z"), 'asc'],
  53 + [_("Name Z-A"), 'desc'],
  54 + [_("Relevance"), 'relevance'],
  55 + [_("Rating"), 'rating']
  56 + ], :selected=>params[:sort])
  57 + ) %>
  58 + </div>
  59 + </div>
60 </div> 60 </div>
61 - </div> 61 + <% end %>
62 </div> 62 </div>
  63 +
63 </div> 64 </div>
64 65
65 <% if @empty_query %> 66 <% if @empty_query %>
@@ -68,3 +69,5 @@ @@ -68,3 +69,5 @@
68 <div class="search-hint"><%= hint %></div> 69 <div class="search-hint"><%= hint %></div>
69 <% end %> 70 <% end %>
70 <% end %> 71 <% end %>
  72 +
  73 +<%= hidden_field_tag :only_softwares_hidden, params[:only_softwares] %>