From b0f1226f5eada65c85d5d0b22d5b2511ebd445ac Mon Sep 17 00:00:00 2001 From: Luciano Prestes Cavalcanti Date: Mon, 1 Sep 2014 14:38:56 -0400 Subject: [PATCH] Add functional tests to people custom search --- lib/mpog_software_plugin.rb | 8 ++++---- lib/software_info.rb | 22 +++++++++++----------- test/functional/search_controller_test.rb | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 15 deletions(-) create mode 100644 test/functional/search_controller_test.rb diff --git a/lib/mpog_software_plugin.rb b/lib/mpog_software_plugin.rb index 2fe39a4..2dfd3b1 100644 --- a/lib/mpog_software_plugin.rb +++ b/lib/mpog_software_plugin.rb @@ -144,11 +144,11 @@ class MpogSoftwarePlugin < Noosfero::Plugin communities << s.community end results = communities - results = results.paginate(:per_page => 24, :page => params[:page]) - @searches[@asset] = {:results => results} - @search = results + results = results.paginate(:per_page => 24, :page => params[:page]) + @searches[@asset] = {:results => results} + @search = results - render :action => :communities + render :action => :communities end end diff --git a/lib/software_info.rb b/lib/software_info.rb index b32d8f9..86cef29 100644 --- a/lib/software_info.rb +++ b/lib/software_info.rb @@ -29,57 +29,57 @@ class SoftwareInfo < ActiveRecord::Base like_sql = "" values = [] - unless name.nil? and name.blank? + unless name.blank? like_sql << "name ILIKE ? AND " values << "%#{name}%" end - if (not database_description_id.nil?) and (not database_description_id.blank?) + unless database_description_id.blank? like_sql << "software_databases.database_description_id = ? AND " values << "#{database_description_id}" end - if (not programming_language_id.nil?) and (not programming_language_id.blank?) + unless programming_language_id.blank? like_sql << "software_languages.programming_language_id = ? AND " values << "#{programming_language_id}" end - if (not operating_system_name_id.nil?) and (not operating_system_name_id.blank?) + unless operating_system_name_id.blank? like_sql << "operating_systems.operating_system_name_id = ? AND " values << "#{operating_system_name_id}" end - if (not license_info_id.nil?) and (not license_info_id.blank?) + unless license_info_id.blank? like_sql << "license_info_id = ? AND " values << "#{license_info_id}" end - if (not internacionalizable.nil?) and (not internacionalizable.blank?) + unless internacionalizable.blank? like_sql << "internacionalizable = ? AND " values << "#{internacionalizable}" end - if (not icp_brasil.nil?) and (not icp_brasil.blank?) + unless icp_brasil.blank? like_sql << "icp_brasil = ? AND " values << "#{icp_brasil}" end - if (not e_ping.nil?) and (not e_ping.blank?) + unless e_ping.blank? like_sql << "e_ping = ? AND " values << "#{e_ping}" end - if (not e_mag.nil?) and (not e_mag.blank?) + unless e_mag.blank? like_sql << "e_mag = ? AND " values << "#{e_mag}" end - if (not e_arq.nil?) and (not e_arq.blank?) + unless e_arq.blank? like_sql << "e_arq = ? AND " values << "#{e_arq}" end - if (not controlled_vocabulary.nil?) and (not controlled_vocabulary.blank?) + unless controlled_vocabulary.blank? controlled_vocabulary = controlled_vocabulary.gsub(' ', '').underscore like_sql << "controlled_vocabulary.#{controlled_vocabulary} = ? AND " values << "true" diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb new file mode 100644 index 0000000..d09b6ea --- /dev/null +++ b/test/functional/search_controller_test.rb @@ -0,0 +1,104 @@ +require File.dirname(__FILE__) + '/../../../../test/test_helper' +require File.dirname(__FILE__) + '/../../../../app/controllers/public/search_controller' + +class SearchController; def rescue_action(e) raise e end; end + +class SearchControllerTest < ActionController::TestCase + + def setup + environment = Environment.default + environment.enabled_plugins = ['MpogSoftwarePlugin'] + environment.save + + @controller = SearchController.new + @request = ActionController::TestRequest.new + @request.stubs(:ssl?).returns(:false) + @response = ActionController::TestResponse.new + + LicenseInfo.create(:version=>"GPL-2", :link =>"www.gpl2.com") + ProgrammingLanguage.create(:name=>"C++") + DatabaseDescription.create(:name => "Oracle") + OperatingSystemName.create(:name=>"Debian") + + operating_system = OperatingSystem.new(version: '1.0') + operating_system.operating_system_name = OperatingSystemName.last + operating_system.save! + + software_language = SoftwareLanguage.new(version: "1.0", operating_system: "windows") + software_language.programming_language = ProgrammingLanguage.last + software_language.save! + + software_database = SoftwareDatabase.new(version: "1.0", operating_system: "windows") + software_database.database_description = DatabaseDescription.last + software_database.save! + end + + should "search for people by name" do + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person + + get :people, :query => "user_1" + + assert_includes assigns(:searches)[:people][:results], p1 + end + + should "search for people by state" do + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person + + get :people, :state => "DF" + + assert_includes assigns(:searches)[:people][:results], p1 + end + + should "search for people by city" do + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person + + get :people, :city => "Gama" + + assert_includes assigns(:searches)[:people][:results], p1 + end + + should "search for people by email" do + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person + + get :people, :email => "user_1@user.com" + + assert_includes assigns(:searches)[:people][:results], p1 + end + + + # should "search for software by name" do + # software = create_software("software") + + # get :communities, :type => "Software", :query => "", :name => "software", :database_description => {:id => ""}, :programming_language => {:id=>""}, :operating_system => {:id => ""}, :controlled_vocabulary => "", :license_info => {:id => ""}, :e_ping => "", :e_mag => "", :icp_brasil => "", :e_arq => "", :internacionalizable => "" + + # assert_includes assigns(:searches)[:communities][:results], software.community + # end + + protected + + def create_user name, state, city, email + user = fast_create(User) + user.person = fast_create(Person) + user.person.state = state + user.person.city = city + user.person.email = email + user.save! + user.person.save! + user + end + + def create_software name + community = Community.create(:name => name) + software_info = SoftwareInfo::new(:acronym=>"SFT", :operating_platform=>"windows") + software_info.community = community + software_info.software_languages << SoftwareLanguage.last + software_info.software_databases << SoftwareDatabase.last + software_info.operating_systems << OperatingSystem.last + software_info.save! + + community.save! + + software_info + end + +end -- libgit2 0.21.2