Commit a6d9e08e9cadae5e137ffb773179bf6564cafcc4

Authored by Fabio Teixeira
1 parent c5744e33

Fix search_controller broken tests

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
lib/ext/search_controller.rb
@@ -3,29 +3,28 @@ require_dependency &#39;search_controller&#39; @@ -3,29 +3,28 @@ require_dependency &#39;search_controller&#39;
3 class SearchController 3 class SearchController
4 4
5 def communities 5 def communities
6 - @scope = visible_profiles(Community)  
7 - full_text_search  
8 - results = @searches[@asset][:results]  
9 -  
10 - results = results.each {|community| !community.software?} 6 + results = filter_communities_list do |community|
  7 + !community.software?
  8 + end
  9 + results = results.paginate(:per_page => 24, :page => params[:page])
11 @searches[@asset] = {:results => results} 10 @searches[@asset] = {:results => results}
12 @search = results 11 @search = results
13 end 12 end
14 13
15 def software_infos 14 def software_infos
16 prepare_software_search_page 15 prepare_software_search_page
17 - @scope = visible_profiles(Community)  
18 - full_text_search  
19 - results = @searches[@asset][:results]  
20 -  
21 - results = results.select {|community| community if community.software?} 16 + results = filter_software_infos_list
22 results = results.paginate(:per_page => @per_page, :page => params[:page]) 17 results = results.paginate(:per_page => @per_page, :page => params[:page])
23 @searches[@asset] = {:results => results} 18 @searches[@asset] = {:results => results}
24 @search = results 19 @search = results
25 - @software_count = results.count 20 + @software_count = filter_software_infos_list.count
  21 +
  22 +
26 render :layout=>false if request.xhr? 23 render :layout=>false if request.xhr?
27 end 24 end
28 25
  26 + protected
  27 +
29 def filter_communities_list 28 def filter_communities_list
30 unfiltered_list = visible_profiles(Community) 29 unfiltered_list = visible_profiles(Community)
31 30
@@ -51,8 +50,6 @@ class SearchController @@ -51,8 +50,6 @@ class SearchController
51 sort_communities_list filtered_community_list 50 sort_communities_list filtered_community_list
52 end 51 end
53 52
54 - protected  
55 -  
56 def get_filter_category_ids 53 def get_filter_category_ids
57 category_ids = [] 54 category_ids = []
58 unless params[:selected_categories_id].blank? 55 unless params[:selected_categories_id].blank?
test/functional/search_controller_test.rb
@@ -20,44 +20,57 @@ class SearchControllerTest &lt; ActionController::TestCase @@ -20,44 +20,57 @@ class SearchControllerTest &lt; ActionController::TestCase
20 @request.stubs(:ssl?).returns(:false) 20 @request.stubs(:ssl?).returns(:false)
21 @response = ActionController::TestResponse.new 21 @response = ActionController::TestResponse.new
22 22
  23 + @licenses = [
  24 + LicenseInfo.create(:version => "GPL - 1"),
  25 + LicenseInfo.create(:version => "GPL - 2")
  26 + ]
  27 +
23 create_software_categories 28 create_software_categories
  29 +
  30 + @softwares = []
  31 +
  32 + @softwares << create_software_info("Software One", :acronym => "SFO", :finality => "Help")
  33 + @softwares << create_software_info("Software Two", :acronym => "SFT", :finality => "Task")
  34 +
  35 + @softwares[0].community.categories << Category.first
  36 + @softwares[1].community.categories << Category.last
  37 +
  38 + @softwares[0].license_info = @licenses.first
  39 + @softwares[1].license_info = @licenses.last
  40 +
  41 + @softwares[0].save!
  42 + @softwares[1].save!
24 end 43 end
25 44
26 should "communities searches don't have software" do 45 should "communities searches don't have software" do
27 - community = create_community("New Community")  
28 - software = create_software_info("New Software") 46 + community = create_community("Community One")
29 47
30 - get :communities, :query => "New" 48 + get :communities, :query => "One"
31 49
32 assert_includes assigns(:searches)[:communities][:results], community 50 assert_includes assigns(:searches)[:communities][:results], community
33 - assert_not_includes assigns(:searches)[:communities][:results], software 51 + assert_not_includes assigns(:searches)[:communities][:results], @softwares.first.community
34 end 52 end
35 53
36 should "software_infos search don't have community" do 54 should "software_infos search don't have community" do
37 - community = create_community("New Community")  
38 - software = create_software_info("New Software") 55 + community = create_community("Community One")
39 56
40 - software.license_info = LicenseInfo.create :version => "GPL - 1.0"  
41 - software.save! 57 + get :software_infos, :query => "One"
42 58
43 - get :software_infos, :query => "New"  
44 -  
45 - assert_includes assigns(:searches)[:software_infos][:results], software.community 59 + assert_includes assigns(:searches)[:software_infos][:results], @softwares.first.community
46 assert_not_includes assigns(:searches)[:software_infos][:results], community 60 assert_not_includes assigns(:searches)[:software_infos][:results], community
47 end 61 end
48 62
49 63
50 - should "Don't found template in communities search" do  
51 - community = create_community("New Community")  
52 - software = create_software_info("New Software")  
53 - software.license_info = LicenseInfo.create(:version => "GPL")  
54 - software.save! 64 + should "Don't have template in communities search result" do
  65 + communities = []
  66 + communities << create_community("Community One")
  67 + communities << create_community("Community Two")
55 68
56 - community_template = create_community("New Community Template") 69 + community_template = create_community("Community Template")
57 community_template.is_template = true 70 community_template.is_template = true
58 community_template.save! 71 community_template.save!
59 72
60 - get :communities, :query => "New" 73 + get :communities, :query => "Comm"
61 74
62 assert_not_includes( 75 assert_not_includes(
63 assigns(:searches)[:communities][:results], 76 assigns(:searches)[:communities][:results],
@@ -66,124 +79,79 @@ class SearchControllerTest &lt; ActionController::TestCase @@ -66,124 +79,79 @@ class SearchControllerTest &lt; ActionController::TestCase
66 end 79 end
67 80
68 should "software_infos search by category" do 81 should "software_infos search by category" do
69 - software_one = create_software_info("Software One")  
70 - software_two = create_software_info("Software Two")  
71 -  
72 - software_one.community.categories << Category.first  
73 - software_two.community.categories << Category.last  
74 -  
75 - software_one.license_info = LicenseInfo.create :version => "GPL - 1.0"  
76 - software_two.license_info = LicenseInfo.create :version => "GPL - 1.0"  
77 -  
78 - software_one.save!  
79 - software_two.save!  
80 -  
81 get( 82 get(
82 :software_infos, 83 :software_infos,
83 :query => "", 84 :query => "",
84 :selected_categories_id => [Category.first.id] 85 :selected_categories_id => [Category.first.id]
85 ) 86 )
86 87
87 - assert_includes assigns(:searches)[:software_infos][:results], software_one.community  
88 - assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community 88 + assert_includes assigns(:searches)[:software_infos][:results], @softwares.first.community
  89 + assert_not_includes assigns(:searches)[:software_infos][:results], @softwares.last.community
89 end 90 end
90 91
91 should "software_infos search by programming language" do 92 should "software_infos search by programming language" do
92 - software_one = create_software_info("Software One")  
93 - software_two = create_software_info("Software Two")  
94 -  
95 - software_one.license_info = LicenseInfo.create :version => "GPL - 1.0"  
96 - software_two.license_info = LicenseInfo.create :version => "GPL - 1.0" 93 + @softwares.first.software_languages << create_software_language("Python", "1.0")
  94 + @softwares.last.software_languages << create_software_language("Java", "8.1")
97 95
98 - software_one.software_languages << create_software_language("Python", "1.0")  
99 - software_two.software_languages << create_software_language("Java", "8.1")  
100 -  
101 - software_one.save!  
102 - software_two.save! 96 + @softwares.first.save!
  97 + @softwares.last.save!
103 98
104 get( 99 get(
105 :software_infos, 100 :software_infos,
106 :query => "python", 101 :query => "python",
107 ) 102 )
108 103
109 - assert_includes assigns(:searches)[:software_infos][:results], software_one.community  
110 - assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community 104 + assert_includes assigns(:searches)[:software_infos][:results], @softwares.first.community
  105 + assert_not_includes assigns(:searches)[:software_infos][:results], @softwares.last.community
111 end 106 end
112 107
113 should "software_infos search by database description" do 108 should "software_infos search by database description" do
114 - software_one = create_software_info("Software One")  
115 - software_two = create_software_info("Software Two")  
116 -  
117 - software_one.license_info = LicenseInfo.create :version => "GPL - 1.0"  
118 - software_two.license_info = LicenseInfo.create :version => "GPL - 1.0"  
119 -  
120 - software_one.software_databases << create_software_database("MySQL", "1.0")  
121 - software_two.software_databases << create_software_database("Postgrees", "8.1") 109 + @softwares.first.software_databases << create_software_database("MySQL", "1.0")
  110 + @softwares.last.software_databases << create_software_database("Postgrees", "8.1")
122 111
123 - software_one.save!  
124 - software_two.save! 112 + @softwares.first.save!
  113 + @softwares.last.save!
125 114
126 get( 115 get(
127 :software_infos, 116 :software_infos,
128 :query => "mysql", 117 :query => "mysql",
129 ) 118 )
130 119
131 - assert_includes assigns(:searches)[:software_infos][:results], software_one.community  
132 - assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community 120 + assert_includes assigns(:searches)[:software_infos][:results], @softwares.first.community
  121 + assert_not_includes assigns(:searches)[:software_infos][:results], @softwares.last.community
133 end 122 end
134 123
135 should "software_infos search by finality" do 124 should "software_infos search by finality" do
136 - software_one = create_software_info("Software One", :finality => "Help")  
137 - software_two = create_software_info("Software Two", :finality => "Task")  
138 -  
139 - software_one.license_info = LicenseInfo.create :version => "GPL - 1.0"  
140 - software_two.license_info = LicenseInfo.create :version => "GPL - 1.0"  
141 -  
142 - software_one.save!  
143 - software_two.save!  
144 -  
145 get( 125 get(
146 :software_infos, 126 :software_infos,
147 :query => "help", 127 :query => "help",
148 ) 128 )
149 129
150 - assert_includes assigns(:searches)[:software_infos][:results], software_one.community  
151 - assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community 130 +
  131 + assert_includes assigns(:searches)[:software_infos][:results], @softwares.first.community
  132 + assert_not_includes assigns(:searches)[:software_infos][:results], @softwares.last.community
152 end 133 end
153 134
154 should "software_infos search by acronym" do 135 should "software_infos search by acronym" do
155 - software_one = create_software_info("Software One", :acronym => "SFO", :finality => "Help")  
156 - software_two = create_software_info("Software Two", :acronym => "SFT", :finality => "Task")  
157 -  
158 - software_one.license_info = LicenseInfo.create :version => "GPL - 1.0"  
159 - software_two.license_info = LicenseInfo.create :version => "GPL - 1.0"  
160 -  
161 - software_one.save!  
162 - software_two.save!  
163 -  
164 get( 136 get(
165 :software_infos, 137 :software_infos,
166 :query => "SFO", 138 :query => "SFO",
167 ) 139 )
168 140
169 - assert_includes assigns(:searches)[:software_infos][:results], software_one.community  
170 - assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community 141 + assert_includes assigns(:searches)[:software_infos][:results], @softwares.first.community
  142 + assert_not_includes assigns(:searches)[:software_infos][:results], @softwares.last.community
171 end 143 end
172 144
173 should "software_infos search by relevance" do 145 should "software_infos search by relevance" do
174 - software_one = create_software_info("Software One", :acronym => "SFO", :finality => "Help")  
175 - software_two = create_software_info("Java", :acronym => "SFT", :finality => "Task")  
176 - software_three = create_software_info("Software Three", :acronym => "SFW", :finality => "Java") 146 + @softwares << create_software_info("Software Three", :acronym => "SFW", :finality => "Java")
  147 + @softwares.last.license_info = LicenseInfo.create :version => "GPL - 3.0"
177 148
178 - software_one.license_info = LicenseInfo.create :version => "GPL - 1.0"  
179 - software_two.license_info = LicenseInfo.create :version => "GPL - 1.0"  
180 - software_three.license_info = LicenseInfo.create :version => "GPL - 1.0"  
181 149
182 - software_one.software_languages << create_software_language("Java", "8.0") 150 + @softwares.first.software_languages << create_software_language("Java", "8.0")
  151 + @softwares.first.save!
183 152
184 - software_one.save!  
185 - software_two.save!  
186 - software_three.save! 153 + @softwares[1].community.name = "Java"
  154 + @softwares[1].community.save!
187 155
188 get( 156 get(
189 :software_infos, 157 :software_infos,
@@ -191,9 +159,9 @@ class SearchControllerTest &lt; ActionController::TestCase @@ -191,9 +159,9 @@ class SearchControllerTest &lt; ActionController::TestCase
191 :query => "Java" 159 :query => "Java"
192 ) 160 )
193 161
194 - assert_equal assigns(:searches)[:software_infos][:results][0], software_two.community  
195 - assert_equal assigns(:searches)[:software_infos][:results][1], software_three.community  
196 - assert_equal assigns(:searches)[:software_infos][:results][2], software_one.community 162 + assert_equal assigns(:searches)[:software_infos][:results][0], @softwares[1].community
  163 + assert_equal assigns(:searches)[:software_infos][:results][1], @softwares[2].community
  164 + assert_equal assigns(:searches)[:software_infos][:results][2], @softwares[0].community
197 end 165 end
198 166
199 private 167 private
@@ -241,5 +209,4 @@ class SearchControllerTest &lt; ActionController::TestCase @@ -241,5 +209,4 @@ class SearchControllerTest &lt; ActionController::TestCase
241 software_database 209 software_database
242 end 210 end
243 211
244 -  
245 end 212 end