From 1bac841f2b52362c62447df68afa356b768da61c Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Wed, 6 Mar 2013 19:52:59 +0000 Subject: [PATCH] Fixing search controller tests --- app/controllers/public/search_controller.rb | 7 +++++-- app/helpers/search_helper.rb | 40 +++++++++++----------------------------- app/models/article.rb | 6 ++++++ app/models/enterprise.rb | 2 ++ app/models/product.rb | 6 ++++++ app/models/profile.rb | 6 ++++++ app/views/search/_display_results.rhtml | 2 +- test/functional/search_controller_test.rb | 19 ++++++++++++------- 8 files changed, 49 insertions(+), 39 deletions(-) diff --git a/app/controllers/public/search_controller.rb b/app/controllers/public/search_controller.rb index b6431e2..119909c 100644 --- a/app/controllers/public/search_controller.rb +++ b/app/controllers/public/search_controller.rb @@ -33,7 +33,10 @@ class SearchController < PublicController end @asset = nil - render :action => @searches.keys.first if @searches.keys.size == 1 + if @searches.keys.size == 1 + @asset = @searches.keys.first + render :action => @asset + end end # view the summary of one category @@ -170,7 +173,7 @@ class SearchController < PublicController return end - @enabled_searches = SEARCHES.select {|key, name| environment.disabled?("disable_asset_#{params[:action]}") } + @enabled_searches = SEARCHES.select {|key, name| environment.disabled?("disable_asset_#{key}") } @searching = {} @titles = {} @enabled_searches.each do |key, name| diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 3425ad8..87ba0de 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -14,17 +14,6 @@ module SearchHelper :events, _('Events'), ] - VALID_DISPLAYS = %w[full compatct map] - - DEFAULT_DISPLAY = { - :articles => 'full', - :communities => 'compact', - :enterprises => 'compact', - :events => 'full', - :people => 'compact', - :products => 'full', - } - FILTER_TRANSLATION = { 'more_popular' => _('More popular'), 'more_active' => _('More active'), @@ -60,20 +49,12 @@ module SearchHelper :align => 'center', :class => 'search-category-context') if category end - def display_map?(asset) - [:enterprises, :products].include?(asset) - end - - def display_compact?(asset) - [:communities, :enterprises, :people].include?(asset) - end - - def display_full?(asset) - [:articles, :enterprises, :events, :products].include?(asset) + def display?(asset, mode) + defined?(asset_class(asset)::SEARCH_DISPLAYS) && asset_class(asset)::SEARCH_DISPLAYS.include?(mode.to_s) end def display_results(searches=nil, asset=nil) - if display_map?(asset) && map_search?(searches) + if display?(asset, :map) && map_search?(searches) partial = 'google_maps' klass = 'map' else @@ -84,11 +65,12 @@ module SearchHelper content_tag('div', render(:partial => partial), :class => "map-or-list-search-results #{klass}") end - def display_filter(asset, display) - if VALID_DISPLAYS.include?(display) && send("display_#{display}?", asset) + def display_filter(item, display) + asset = item.class.name.downcase.pluralize.to_sym + if display?(asset, display) display else - DEFAULT_DISPLAY[asset] + item.default_search_display end end @@ -106,10 +88,10 @@ module SearchHelper end def display_selector(asset, display, float = 'right') - if [display_map?(asset), display_compact?(asset), display_full?(asset)].select {|option| option}.count > 1 - compact_link = display_compact?(asset) ? (display == 'compact' ? _('Compact') : link_to(_('Compact'), params.merge(:display => 'compact'))) : nil - map_link = display_map?(asset) ? (display == 'map' ? _('Map') : link_to(_('Map'), params.merge(:display => 'map'))) : nil - full_link = display_full?(asset) ? (display == 'full' ? _('Full') : link_to(_('Full'), params.merge(:display => 'full'))) : nil + if [display?(asset, :map), display?(asset, :compact), display?(asset, :full)].select {|option| option}.count > 1 + compact_link = display?(asset, :compact) ? (display == 'compact' ? _('Compact') : link_to(_('Compact'), params.merge(:display => 'compact'))) : nil + map_link = display?(asset, :map) ? (display == 'map' ? _('Map') : link_to(_('Map'), params.merge(:display => 'map'))) : nil + full_link = display?(asset, :full) ? (display == 'full' ? _('Full') : link_to(_('Full'), params.merge(:display => 'full'))) : nil content_tag('div', content_tag('strong', _('Display')) + ': ' + [compact_link, map_link, full_link].compact.join(' | '), :class => 'search-customize-options' diff --git a/app/models/article.rb b/app/models/article.rb index ed3b248..4c1adb8 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -16,6 +16,12 @@ class Article < ActiveRecord::Base more_comments ] + SEARCH_DISPLAYS = %w[full] + + def default_search_display + 'full' + end + track_actions :create_article, :after_create, :keep_params => [:name, :url, :lead, :first_image], :if => Proc.new { |a| a.is_trackable? && !a.image? } # xss_terminate plugin can't sanitize array fields diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 469a2d0..92b0424 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -2,6 +2,8 @@ # only enterprises can offer products and services. class Enterprise < Organization + SEARCH_DISPLAYS += %w[map full] + def self.type_name _('Enterprise') end diff --git a/app/models/product.rb b/app/models/product.rb index 343e2c1..e2bc0c1 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -9,6 +9,12 @@ class Product < ActiveRecord::Base more_recent ] + SEARCH_DISPLAYS = %w[map full] + + def default_search_display + 'full' + end + belongs_to :enterprise has_one :region, :through => :enterprise validates_presence_of :enterprise diff --git a/app/models/profile.rb b/app/models/profile.rb index 278fd37..7aaac5f 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -13,6 +13,12 @@ class Profile < ActiveRecord::Base more_recent ] + SEARCH_DISPLAYS = %w[compact] + + def default_search_display + 'compact' + end + module Roles def self.admin(env_id) find_role('admin', env_id) diff --git a/app/views/search/_display_results.rhtml b/app/views/search/_display_results.rhtml index 2d738f0..5d9d8a4 100644 --- a/app/views/search/_display_results.rhtml +++ b/app/views/search/_display_results.rhtml @@ -12,11 +12,11 @@ <% end %> <% end %> - <% display = display_filter(name, params[:display]) %>