Commit b0f1226f5eada65c85d5d0b22d5b2511ebd445ac

Authored by Luciano Prestes
1 parent 1e377544

Add functional tests to people custom search

(institution_fields)

Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Signed-off-by: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>
lib/mpog_software_plugin.rb
... ... @@ -144,11 +144,11 @@ class MpogSoftwarePlugin &lt; Noosfero::Plugin
144 144 communities << s.community
145 145 end
146 146 results = communities
147   - results = results.paginate(:per_page => 24, :page => params[:page])
148   - @searches[@asset] = {:results => results}
149   - @search = results
  147 + results = results.paginate(:per_page => 24, :page => params[:page])
  148 + @searches[@asset] = {:results => results}
  149 + @search = results
150 150  
151   - render :action => :communities
  151 + render :action => :communities
152 152 end
153 153 end
154 154  
... ...
lib/software_info.rb
... ... @@ -29,57 +29,57 @@ class SoftwareInfo &lt; ActiveRecord::Base
29 29 like_sql = ""
30 30 values = []
31 31  
32   - unless name.nil? and name.blank?
  32 + unless name.blank?
33 33 like_sql << "name ILIKE ? AND "
34 34 values << "%#{name}%"
35 35 end
36 36  
37   - if (not database_description_id.nil?) and (not database_description_id.blank?)
  37 + unless database_description_id.blank?
38 38 like_sql << "software_databases.database_description_id = ? AND "
39 39 values << "#{database_description_id}"
40 40 end
41 41  
42   - if (not programming_language_id.nil?) and (not programming_language_id.blank?)
  42 + unless programming_language_id.blank?
43 43 like_sql << "software_languages.programming_language_id = ? AND "
44 44 values << "#{programming_language_id}"
45 45 end
46 46  
47   - if (not operating_system_name_id.nil?) and (not operating_system_name_id.blank?)
  47 + unless operating_system_name_id.blank?
48 48 like_sql << "operating_systems.operating_system_name_id = ? AND "
49 49 values << "#{operating_system_name_id}"
50 50 end
51 51  
52   - if (not license_info_id.nil?) and (not license_info_id.blank?)
  52 + unless license_info_id.blank?
53 53 like_sql << "license_info_id = ? AND "
54 54 values << "#{license_info_id}"
55 55 end
56 56  
57   - if (not internacionalizable.nil?) and (not internacionalizable.blank?)
  57 + unless internacionalizable.blank?
58 58 like_sql << "internacionalizable = ? AND "
59 59 values << "#{internacionalizable}"
60 60 end
61 61  
62   - if (not icp_brasil.nil?) and (not icp_brasil.blank?)
  62 + unless icp_brasil.blank?
63 63 like_sql << "icp_brasil = ? AND "
64 64 values << "#{icp_brasil}"
65 65 end
66 66  
67   - if (not e_ping.nil?) and (not e_ping.blank?)
  67 + unless e_ping.blank?
68 68 like_sql << "e_ping = ? AND "
69 69 values << "#{e_ping}"
70 70 end
71 71  
72   - if (not e_mag.nil?) and (not e_mag.blank?)
  72 + unless e_mag.blank?
73 73 like_sql << "e_mag = ? AND "
74 74 values << "#{e_mag}"
75 75 end
76 76  
77   - if (not e_arq.nil?) and (not e_arq.blank?)
  77 + unless e_arq.blank?
78 78 like_sql << "e_arq = ? AND "
79 79 values << "#{e_arq}"
80 80 end
81 81  
82   - if (not controlled_vocabulary.nil?) and (not controlled_vocabulary.blank?)
  82 + unless controlled_vocabulary.blank?
83 83 controlled_vocabulary = controlled_vocabulary.gsub(' ', '').underscore
84 84 like_sql << "controlled_vocabulary.#{controlled_vocabulary} = ? AND "
85 85 values << "true"
... ...
test/functional/search_controller_test.rb 0 → 100644
... ... @@ -0,0 +1,104 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +require File.dirname(__FILE__) + '/../../../../app/controllers/public/search_controller'
  3 +
  4 +class SearchController; def rescue_action(e) raise e end; end
  5 +
  6 +class SearchControllerTest < ActionController::TestCase
  7 +
  8 + def setup
  9 + environment = Environment.default
  10 + environment.enabled_plugins = ['MpogSoftwarePlugin']
  11 + environment.save
  12 +
  13 + @controller = SearchController.new
  14 + @request = ActionController::TestRequest.new
  15 + @request.stubs(:ssl?).returns(:false)
  16 + @response = ActionController::TestResponse.new
  17 +
  18 + LicenseInfo.create(:version=>"GPL-2", :link =>"www.gpl2.com")
  19 + ProgrammingLanguage.create(:name=>"C++")
  20 + DatabaseDescription.create(:name => "Oracle")
  21 + OperatingSystemName.create(:name=>"Debian")
  22 +
  23 + operating_system = OperatingSystem.new(version: '1.0')
  24 + operating_system.operating_system_name = OperatingSystemName.last
  25 + operating_system.save!
  26 +
  27 + software_language = SoftwareLanguage.new(version: "1.0", operating_system: "windows")
  28 + software_language.programming_language = ProgrammingLanguage.last
  29 + software_language.save!
  30 +
  31 + software_database = SoftwareDatabase.new(version: "1.0", operating_system: "windows")
  32 + software_database.database_description = DatabaseDescription.last
  33 + software_database.save!
  34 + end
  35 +
  36 + should "search for people by name" do
  37 + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person
  38 +
  39 + get :people, :query => "user_1"
  40 +
  41 + assert_includes assigns(:searches)[:people][:results], p1
  42 + end
  43 +
  44 + should "search for people by state" do
  45 + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person
  46 +
  47 + get :people, :state => "DF"
  48 +
  49 + assert_includes assigns(:searches)[:people][:results], p1
  50 + end
  51 +
  52 + should "search for people by city" do
  53 + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person
  54 +
  55 + get :people, :city => "Gama"
  56 +
  57 + assert_includes assigns(:searches)[:people][:results], p1
  58 + end
  59 +
  60 + should "search for people by email" do
  61 + p1 = create_user("user_1", "DF", "Gama", "user_1@user.com").person
  62 +
  63 + get :people, :email => "user_1@user.com"
  64 +
  65 + assert_includes assigns(:searches)[:people][:results], p1
  66 + end
  67 +
  68 +
  69 + # should "search for software by name" do
  70 + # software = create_software("software")
  71 +
  72 + # 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 => ""
  73 +
  74 + # assert_includes assigns(:searches)[:communities][:results], software.community
  75 + # end
  76 +
  77 + protected
  78 +
  79 + def create_user name, state, city, email
  80 + user = fast_create(User)
  81 + user.person = fast_create(Person)
  82 + user.person.state = state
  83 + user.person.city = city
  84 + user.person.email = email
  85 + user.save!
  86 + user.person.save!
  87 + user
  88 + end
  89 +
  90 + def create_software name
  91 + community = Community.create(:name => name)
  92 + software_info = SoftwareInfo::new(:acronym=>"SFT", :operating_platform=>"windows")
  93 + software_info.community = community
  94 + software_info.software_languages << SoftwareLanguage.last
  95 + software_info.software_databases << SoftwareDatabase.last
  96 + software_info.operating_systems << OperatingSystem.last
  97 + software_info.save!
  98 +
  99 + community.save!
  100 +
  101 + software_info
  102 + end
  103 +
  104 +end
... ...