From c6a5f4ad4d6e5b59b2d05684b66fcf09e80aa36c Mon Sep 17 00:00:00 2001 From: Luciano Prestes Cavalcanti Date: Thu, 5 Feb 2015 10:27:27 -0200 Subject: [PATCH] Add tests for search by software_languages software_databases and finality --- features/software_catalog.feature | 1 + test/functional/search_controller_test.rb | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/helpers/plugin_test_helper.rb | 3 ++- 3 files changed, 94 insertions(+), 1 deletion(-) diff --git a/features/software_catalog.feature b/features/software_catalog.feature index 4101469..373d15c 100644 --- a/features/software_catalog.feature +++ b/features/software_catalog.feature @@ -46,6 +46,7 @@ Feature: Search software Scenario: Show software ordered by name when "Name A-Z" is selected Given I go to /search/software_infos And I select "Name A-Z" from "sort" + And I press "Filter" Then I should see "Software One" before "Software Two" @selenium diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index 6cf733c..331ff04 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -133,6 +133,69 @@ class SearchControllerTest < ActionController::TestCase assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community end + should "software_infos search by programming language" do + software_one = create_software_info("Software One") + software_two = create_software_info("Software Two") + + software_one.license_info = LicenseInfo.create :version=>"GPL - 1.0" + software_two.license_info = LicenseInfo.create :version=>"GPL - 1.0" + + software_one.software_languages << create_software_language("Python", "1.0") + software_two.software_languages << create_software_language("Java", "8.1") + + software_one.save! + software_two.save! + + get( + :software_infos, + :query => "python", + ) + + assert_includes assigns(:searches)[:software_infos][:results], software_one.community + assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community + end + + should "software_infos search by database description" do + software_one = create_software_info("Software One") + software_two = create_software_info("Software Two") + + software_one.license_info = LicenseInfo.create :version=>"GPL - 1.0" + software_two.license_info = LicenseInfo.create :version=>"GPL - 1.0" + + software_one.software_databases << create_software_database("MySQL", "1.0") + software_two.software_databases << create_software_database("Postgrees", "8.1") + + software_one.save! + software_two.save! + + get( + :software_infos, + :query => "mysql", + ) + + assert_includes assigns(:searches)[:software_infos][:results], software_one.community + assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community + end + + should "software_infos search by finality" do + software_one = create_software_info("Software One", :finality => "Help") + software_two = create_software_info("Software Two", :finality => "Task") + + software_one.license_info = LicenseInfo.create :version=>"GPL - 1.0" + software_two.license_info = LicenseInfo.create :version=>"GPL - 1.0" + + software_one.save! + software_two.save! + + get( + :software_infos, + :query => "help", + ) + + assert_includes assigns(:searches)[:software_infos][:results], software_one.community + assert_not_includes assigns(:searches)[:software_infos][:results], software_two.community + end + private def create_software_categories @@ -151,4 +214,32 @@ class SearchControllerTest < ActionController::TestCase :parent => category_software ) end + + def create_software_language(name, version) + unless ProgrammingLanguage.find_by_name(name) + ProgrammingLanguage.create(:name => name) + end + + software_language = SoftwareLanguage.new + software_language.programming_language = ProgrammingLanguage.find_by_name(name) + software_language.version = version + software_language.save! + + software_language + end + + def create_software_database(name, version) + unless DatabaseDescription.find_by_name(name) + DatabaseDescription.create(:name => name) + end + + software_database = SoftwareDatabase.new + software_database.database_description = DatabaseDescription.find_by_name(name) + software_database.version = version + software_database.save! + + software_database + end + + end diff --git a/test/helpers/plugin_test_helper.rb b/test/helpers/plugin_test_helper.rb index d0f0b6b..648bcb8 100644 --- a/test/helpers/plugin_test_helper.rb +++ b/test/helpers/plugin_test_helper.rb @@ -13,10 +13,11 @@ module PluginTestHelper community end - def create_software_info name + def create_software_info name, finality = "" community = create_community(name) software_info = SoftwareInfo.new software_info.community = community + software_info.finality = finality software_info.public_software = true software_info.save software_info -- libgit2 0.21.2