Commit c6a5f4ad4d6e5b59b2d05684b66fcf09e80aa36c

Authored by Luciano Prestes
Committed by Gabriela Navarro
1 parent ca9d8d80

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>
features/software_catalog.feature
... ... @@ -46,6 +46,7 @@ Feature: Search software
46 46 Scenario: Show software ordered by name when "Name A-Z" is selected
47 47 Given I go to /search/software_infos
48 48 And I select "Name A-Z" from "sort"
  49 + And I press "Filter"
49 50 Then I should see "Software One" before "Software Two"
50 51  
51 52 @selenium
... ...
test/functional/search_controller_test.rb
... ... @@ -133,6 +133,69 @@ class SearchControllerTest &lt; ActionController::TestCase
133 133 assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community
134 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 199 private
137 200  
138 201 def create_software_categories
... ... @@ -151,4 +214,32 @@ class SearchControllerTest &lt; ActionController::TestCase
151 214 :parent => category_software
152 215 )
153 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 245 end
... ...
test/helpers/plugin_test_helper.rb
... ... @@ -13,10 +13,11 @@ module PluginTestHelper
13 13 community
14 14 end
15 15  
16   - def create_software_info name
  16 + def create_software_info name, finality = ""
17 17 community = create_community(name)
18 18 software_info = SoftwareInfo.new
19 19 software_info.community = community
  20 + software_info.finality = finality
20 21 software_info.public_software = true
21 22 software_info.save
22 23 software_info
... ...