Commit 3ae9703f17af8b4f2a05bdcd1706221bc2f7ba09
1 parent
4eb9f4aa
Exists in
master
and in
7 other branches
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>
Showing
5 changed files
with
62 additions
and
32 deletions
Show diff stats
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('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot', 'SoftwareCat | @@ -52,6 +52,8 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot', '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 < ActionController::TestCase | @@ -218,6 +218,23 @@ class SearchControllerTest < 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] %> |