Commit c6a5f4ad4d6e5b59b2d05684b66fcf09e80aa36c
Committed by
Gabriela Navarro
1 parent
ca9d8d80
Exists in
master
and in
79 other branches
Add tests for search by software_languages software_databases and finality
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com> Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
Showing
3 changed files
with
94 additions
and
1 deletions
Show diff stats
features/software_catalog.feature
@@ -46,6 +46,7 @@ Feature: Search software | @@ -46,6 +46,7 @@ Feature: Search software | ||
46 | Scenario: Show software ordered by name when "Name A-Z" is selected | 46 | Scenario: Show software ordered by name when "Name A-Z" is selected |
47 | Given I go to /search/software_infos | 47 | Given I go to /search/software_infos |
48 | And I select "Name A-Z" from "sort" | 48 | And I select "Name A-Z" from "sort" |
49 | + And I press "Filter" | ||
49 | Then I should see "Software One" before "Software Two" | 50 | Then I should see "Software One" before "Software Two" |
50 | 51 | ||
51 | @selenium | 52 | @selenium |
test/functional/search_controller_test.rb
@@ -133,6 +133,69 @@ class SearchControllerTest < ActionController::TestCase | @@ -133,6 +133,69 @@ class SearchControllerTest < ActionController::TestCase | ||
133 | assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community | 133 | assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community |
134 | end | 134 | end |
135 | 135 | ||
136 | + should "software_infos search by programming language" do | ||
137 | + software_one = create_software_info("Software One") | ||
138 | + software_two = create_software_info("Software Two") | ||
139 | + | ||
140 | + software_one.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
141 | + software_two.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
142 | + | ||
143 | + software_one.software_languages << create_software_language("Python", "1.0") | ||
144 | + software_two.software_languages << create_software_language("Java", "8.1") | ||
145 | + | ||
146 | + software_one.save! | ||
147 | + software_two.save! | ||
148 | + | ||
149 | + get( | ||
150 | + :software_infos, | ||
151 | + :query => "python", | ||
152 | + ) | ||
153 | + | ||
154 | + assert_includes assigns(:searches)[:software_infos][:results], software_one.community | ||
155 | + assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community | ||
156 | + end | ||
157 | + | ||
158 | + should "software_infos search by database description" do | ||
159 | + software_one = create_software_info("Software One") | ||
160 | + software_two = create_software_info("Software Two") | ||
161 | + | ||
162 | + software_one.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
163 | + software_two.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
164 | + | ||
165 | + software_one.software_databases << create_software_database("MySQL", "1.0") | ||
166 | + software_two.software_databases << create_software_database("Postgrees", "8.1") | ||
167 | + | ||
168 | + software_one.save! | ||
169 | + software_two.save! | ||
170 | + | ||
171 | + get( | ||
172 | + :software_infos, | ||
173 | + :query => "mysql", | ||
174 | + ) | ||
175 | + | ||
176 | + assert_includes assigns(:searches)[:software_infos][:results], software_one.community | ||
177 | + assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community | ||
178 | + end | ||
179 | + | ||
180 | + should "software_infos search by finality" do | ||
181 | + software_one = create_software_info("Software One", :finality => "Help") | ||
182 | + software_two = create_software_info("Software Two", :finality => "Task") | ||
183 | + | ||
184 | + software_one.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
185 | + software_two.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
186 | + | ||
187 | + software_one.save! | ||
188 | + software_two.save! | ||
189 | + | ||
190 | + get( | ||
191 | + :software_infos, | ||
192 | + :query => "help", | ||
193 | + ) | ||
194 | + | ||
195 | + assert_includes assigns(:searches)[:software_infos][:results], software_one.community | ||
196 | + assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community | ||
197 | + end | ||
198 | + | ||
136 | private | 199 | private |
137 | 200 | ||
138 | def create_software_categories | 201 | def create_software_categories |
@@ -151,4 +214,32 @@ class SearchControllerTest < ActionController::TestCase | @@ -151,4 +214,32 @@ class SearchControllerTest < ActionController::TestCase | ||
151 | :parent => category_software | 214 | :parent => category_software |
152 | ) | 215 | ) |
153 | end | 216 | end |
217 | + | ||
218 | + def create_software_language(name, version) | ||
219 | + unless ProgrammingLanguage.find_by_name(name) | ||
220 | + ProgrammingLanguage.create(:name => name) | ||
221 | + end | ||
222 | + | ||
223 | + software_language = SoftwareLanguage.new | ||
224 | + software_language.programming_language = ProgrammingLanguage.find_by_name(name) | ||
225 | + software_language.version = version | ||
226 | + software_language.save! | ||
227 | + | ||
228 | + software_language | ||
229 | + end | ||
230 | + | ||
231 | + def create_software_database(name, version) | ||
232 | + unless DatabaseDescription.find_by_name(name) | ||
233 | + DatabaseDescription.create(:name => name) | ||
234 | + end | ||
235 | + | ||
236 | + software_database = SoftwareDatabase.new | ||
237 | + software_database.database_description = DatabaseDescription.find_by_name(name) | ||
238 | + software_database.version = version | ||
239 | + software_database.save! | ||
240 | + | ||
241 | + software_database | ||
242 | + end | ||
243 | + | ||
244 | + | ||
154 | end | 245 | end |
test/helpers/plugin_test_helper.rb
@@ -13,10 +13,11 @@ module PluginTestHelper | @@ -13,10 +13,11 @@ module PluginTestHelper | ||
13 | community | 13 | community |
14 | end | 14 | end |
15 | 15 | ||
16 | - def create_software_info name | 16 | + def create_software_info name, finality = "" |
17 | community = create_community(name) | 17 | community = create_community(name) |
18 | software_info = SoftwareInfo.new | 18 | software_info = SoftwareInfo.new |
19 | software_info.community = community | 19 | software_info.community = community |
20 | + software_info.finality = finality | ||
20 | software_info.public_software = true | 21 | software_info.public_software = true |
21 | software_info.save | 22 | software_info.save |
22 | software_info | 23 | software_info |