Commit c893df1cdb1eec82af8a2ca91e29d2268baae2a8

Authored by Rodrigo Souto
1 parent 002f897f

Moving acts_as_faceted test to solr plugin

plugins/solr/test/unit/acts_as_faceted_test.rb 0 → 100644
@@ -0,0 +1,163 @@ @@ -0,0 +1,163 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +require "#{File.dirname(__FILE__)}../../lib/acts_as_faceted"
  3 +
  4 +
  5 +class TestModel < ActiveRecord::Base
  6 + def self.f_type_proc(klass)
  7 + klass.constantize
  8 + h = {
  9 + 'UploadedFile' => "Uploaded File",
  10 + 'TextArticle' => "Text",
  11 + 'Folder' => "Folder",
  12 + 'Event' => "Event",
  13 + 'EnterpriseHomepage' => "Homepage",
  14 + 'Gallery' => "Gallery",
  15 + }
  16 + h[klass]
  17 + end
  18 + acts_as_faceted :fields => {
  19 + :f_type => {:label => 'Type', :proc => proc{|klass| f_type_proc(klass)}},
  20 + :f_published_at => {:type => :date, :label => 'Published date', :queries =>
  21 + {'[* TO NOW-1YEARS/DAY]' => "Older than one year", '[NOW-1YEARS TO NOW/DAY]' => "Last year"}},
  22 + }, :order => [:f_type, :f_published_at]
  23 +end
  24 +
  25 +class ActsAsFacetedTest < ActiveSupport::TestCase
  26 + def setup
  27 + @facets = {
  28 + "facet_fields"=> {
  29 + "f_type_facet"=>{"TextArticle"=>15, "Folder"=>3, "UploadedFile"=>6, "Gallery"=>1},
  30 + }, "facet_ranges"=>{}, "facet_dates"=>{},
  31 + "facet_queries"=>{"f_published_at_d:[* TO NOW-1YEARS/DAY]"=>10, "f_published_at_d:[NOW-1YEARS TO NOW/DAY]"=>19}
  32 + }
  33 + #any facet selected
  34 + @facet_params = {}
  35 + @all_facets = @facets
  36 + end
  37 +
  38 + should 'get defined facets' do
  39 + assert TestModel.facets.has_key? :f_type
  40 + assert TestModel.facets.has_key? :f_published_at
  41 + end
  42 +
  43 + should 'get facets by id' do
  44 + facet = TestModel.facet_by_id :f_type
  45 + assert_equal :f_type, facet[:id]
  46 + assert_equal TestModel.facets[:f_type][:label], facet[:label]
  47 + assert_equal TestModel.facets[:f_type][:proc], facet[:proc]
  48 + end
  49 +
  50 + should 'convert facets to solr field names' do
  51 + solr_names = TestModel.solr_fields_names
  52 + assert solr_names.include?("f_type_facet")
  53 + assert solr_names.include?("f_published_at_d")
  54 +
  55 + solr_names = TestModel.to_solr_fields_names
  56 +
  57 + assert_equal solr_names[:f_type], 'f_type_facet'
  58 + assert_equal solr_names[:f_published_at], 'f_published_at_d'
  59 + end
  60 +
  61 + should 'return facets containers' do
  62 + containers = TestModel.facets_results_containers
  63 +
  64 + assert_equal containers.count, 3
  65 + assert_equal containers[:fields], 'facet_fields'
  66 + assert_equal containers[:queries], 'facet_queries'
  67 + assert_equal containers[:ranges], 'facet_ranges'
  68 + end
  69 +
  70 + should 'show facets option for solr' do
  71 + assert TestModel.facets_option_for_solr.include?(:f_type)
  72 + assert !TestModel.facets_option_for_solr.include?(:f_published_at)
  73 + end
  74 +
  75 + should 'show facets fields for solr' do
  76 + TestModel.facets_fields_for_solr.each do |facet|
  77 + assert_equal facet[:f_type], :facet if facet[:f_type]
  78 + assert_equal facet[:f_published_at], :date if facet[:f_published_at]
  79 + end
  80 + end
  81 +
  82 + should 'iterate over each result' do
  83 + facets = TestModel.map_facets_for(Environment.default)
  84 + assert facets.count, 2
  85 +
  86 + f = facets.select{ |f| f[:id] == 'f_type' }.first
  87 + r = TestModel.map_facet_results f, @facet_params, @facets, @all_facets, {}
  88 + assert_equivalent [["TextArticle", 'Text', 15], ["Folder", "Folder", 3], ["UploadedFile", "Uploaded File", 6], ["Gallery", "Gallery", 1]], r
  89 +
  90 + f = facets.select{ |f| f[:id] == 'f_published_at' }.first
  91 + r = TestModel.map_facet_results f, @facet_params, @facets, @all_facets, {}
  92 + assert_equivalent [["[* TO NOW-1YEARS/DAY]", "Older than one year", 10], ["[NOW-1YEARS TO NOW/DAY]", "Last year", 19]], r
  93 + end
  94 +
  95 + should 'return facet hash in map_facets_for' do
  96 + r = TestModel.map_facets_for(Environment.default)
  97 + assert r.count, 2
  98 +
  99 + f_type = r.select{ |f| f[:id] == 'f_type' }.first
  100 + assert_equal f_type[:solr_field], :f_type
  101 + assert_equal f_type[:label], "Type"
  102 +
  103 + f_published = r.select{ |f| f[:id] == 'f_published_at' }.first
  104 + assert_equal :f_published_at, f_published[:solr_field]
  105 + assert_equal :date, f_published[:type]
  106 + assert_equal "Published date", f_published[:label]
  107 + hash = {"[NOW-1YEARS TO NOW/DAY]"=>"Last year", "[* TO NOW-1YEARS/DAY]"=>"Older than one year"}
  108 + assert_equal hash, f_published[:queries]
  109 + end
  110 +
  111 + should 'get label of a facet' do
  112 + f = TestModel.facet_by_id(:f_type)
  113 + assert_equal f[:label], 'Type'
  114 + end
  115 +
  116 + should "get facets' queries" do
  117 + f = TestModel.facet_by_id(:f_published_at)
  118 + assert_equal f[:queries]['[* TO NOW-1YEARS/DAY]'], 'Older than one year'
  119 + end
  120 +
  121 + should 'not map_facet_results without map_facets_for' do
  122 + assert_raise RuntimeError do
  123 + f = TestModel.facet_by_id(:f_published_at)
  124 + TestModel.map_facet_results f, @facet_params, @facets, @all_facets, {}
  125 + end
  126 + end
  127 +
  128 + should 'show correct ordering' do
  129 + assert_equal TestModel.facets_order, [:f_type, :f_published_at]
  130 + end
  131 +
  132 + should 'return facet options hash in acts_as_solr format' do
  133 + options = TestModel.facets_find_options()[:facets]
  134 + assert_equal [:f_type], options[:fields]
  135 + assert_equivalent ["f_published_at:[NOW-1YEARS TO NOW/DAY]", "f_published_at:[* TO NOW-1YEARS/DAY]"], options[:query]
  136 + end
  137 +
  138 + should 'return browse options hash in acts_as_solr format' do
  139 + options = TestModel.facets_find_options()[:facets]
  140 + assert_equal options[:browse], []
  141 +
  142 + options = TestModel.facets_find_options({'f_published_at' => '[* TO NOW-1YEARS/DAY]'})[:facets]
  143 + assert_equal options[:browse], ['f_published_at:[* TO NOW-1YEARS/DAY]']
  144 + end
  145 +
  146 + should 'sort facet results alphabetically' do
  147 + facets = TestModel.map_facets_for(Environment.default)
  148 + facet = facets.select{ |f| f[:id] == 'f_type' }.first
  149 + facet_data = TestModel.map_facet_results facet, @facet_params, @facets, @all_facets, {}
  150 + sorted = TestModel.facet_result_sort(facet, facet_data, :alphabetically)
  151 + assert_equal sorted,
  152 + [["Folder", "Folder", 3], ["Gallery", "Gallery", 1], ["TextArticle", 'Text', 15], ["UploadedFile", "Uploaded File", 6]]
  153 + end
  154 +
  155 + should 'sort facet results by count' do
  156 + facets = TestModel.map_facets_for(Environment.default)
  157 + facet = facets.select{ |f| f[:id] == 'f_type' }.first
  158 + facet_data = TestModel.map_facet_results facet, @facet_params, @facets, @all_facets, {}
  159 + sorted = TestModel.facet_result_sort(facet, facet_data, :count)
  160 + assert_equal sorted,
  161 + [["TextArticle", "Text", 15], ["UploadedFile", "Uploaded File", 6], ["Folder", "Folder", 3], ["Gallery", "Gallery", 1]]
  162 + end
  163 +end
test/unit/acts_as_faceted_test.rb
@@ -1,162 +0,0 @@ @@ -1,162 +0,0 @@
1 -require File.dirname(__FILE__) + '/../test_helper'  
2 -require 'acts_as_faceted'  
3 -  
4 -class TestModel < ActiveRecord::Base  
5 - def self.f_type_proc(klass)  
6 - klass.constantize  
7 - h = {  
8 - 'UploadedFile' => "Uploaded File",  
9 - 'TextArticle' => "Text",  
10 - 'Folder' => "Folder",  
11 - 'Event' => "Event",  
12 - 'EnterpriseHomepage' => "Homepage",  
13 - 'Gallery' => "Gallery",  
14 - }  
15 - h[klass]  
16 - end  
17 - acts_as_faceted :fields => {  
18 - :f_type => {:label => 'Type', :proc => proc{|klass| f_type_proc(klass)}},  
19 - :f_published_at => {:type => :date, :label => 'Published date', :queries =>  
20 - {'[* TO NOW-1YEARS/DAY]' => "Older than one year", '[NOW-1YEARS TO NOW/DAY]' => "Last year"}},  
21 - }, :order => [:f_type, :f_published_at]  
22 -end  
23 -  
24 -class ActsAsFacetedTest < ActiveSupport::TestCase  
25 - def setup  
26 - @facets = {  
27 - "facet_fields"=> {  
28 - "f_type_facet"=>{"TextArticle"=>15, "Folder"=>3, "UploadedFile"=>6, "Gallery"=>1},  
29 - }, "facet_ranges"=>{}, "facet_dates"=>{},  
30 - "facet_queries"=>{"f_published_at_d:[* TO NOW-1YEARS/DAY]"=>10, "f_published_at_d:[NOW-1YEARS TO NOW/DAY]"=>19}  
31 - }  
32 - #any facet selected  
33 - @facet_params = {}  
34 - @all_facets = @facets  
35 - end  
36 -  
37 - should 'get defined facets' do  
38 - assert TestModel.facets.has_key? :f_type  
39 - assert TestModel.facets.has_key? :f_published_at  
40 - end  
41 -  
42 - should 'get facets by id' do  
43 - facet = TestModel.facet_by_id :f_type  
44 - assert_equal :f_type, facet[:id]  
45 - assert_equal TestModel.facets[:f_type][:label], facet[:label]  
46 - assert_equal TestModel.facets[:f_type][:proc], facet[:proc]  
47 - end  
48 -  
49 - should 'convert facets to solr field names' do  
50 - solr_names = TestModel.solr_fields_names  
51 - assert solr_names.include?("f_type_facet")  
52 - assert solr_names.include?("f_published_at_d")  
53 -  
54 - solr_names = TestModel.to_solr_fields_names  
55 -  
56 - assert_equal solr_names[:f_type], 'f_type_facet'  
57 - assert_equal solr_names[:f_published_at], 'f_published_at_d'  
58 - end  
59 -  
60 - should 'return facets containers' do  
61 - containers = TestModel.facets_results_containers  
62 -  
63 - assert_equal containers.count, 3  
64 - assert_equal containers[:fields], 'facet_fields'  
65 - assert_equal containers[:queries], 'facet_queries'  
66 - assert_equal containers[:ranges], 'facet_ranges'  
67 - end  
68 -  
69 - should 'show facets option for solr' do  
70 - assert TestModel.facets_option_for_solr.include?(:f_type)  
71 - assert !TestModel.facets_option_for_solr.include?(:f_published_at)  
72 - end  
73 -  
74 - should 'show facets fields for solr' do  
75 - TestModel.facets_fields_for_solr.each do |facet|  
76 - assert_equal facet[:f_type], :facet if facet[:f_type]  
77 - assert_equal facet[:f_published_at], :date if facet[:f_published_at]  
78 - end  
79 - end  
80 -  
81 - should 'iterate over each result' do  
82 - facets = TestModel.map_facets_for(Environment.default)  
83 - assert facets.count, 2  
84 -  
85 - f = facets.select{ |f| f[:id] == 'f_type' }.first  
86 - r = TestModel.map_facet_results f, @facet_params, @facets, @all_facets, {}  
87 - assert_equivalent [["TextArticle", 'Text', 15], ["Folder", "Folder", 3], ["UploadedFile", "Uploaded File", 6], ["Gallery", "Gallery", 1]], r  
88 -  
89 - f = facets.select{ |f| f[:id] == 'f_published_at' }.first  
90 - r = TestModel.map_facet_results f, @facet_params, @facets, @all_facets, {}  
91 - assert_equivalent [["[* TO NOW-1YEARS/DAY]", "Older than one year", 10], ["[NOW-1YEARS TO NOW/DAY]", "Last year", 19]], r  
92 - end  
93 -  
94 - should 'return facet hash in map_facets_for' do  
95 - r = TestModel.map_facets_for(Environment.default)  
96 - assert r.count, 2  
97 -  
98 - f_type = r.select{ |f| f[:id] == 'f_type' }.first  
99 - assert_equal f_type[:solr_field], :f_type  
100 - assert_equal f_type[:label], "Type"  
101 -  
102 - f_published = r.select{ |f| f[:id] == 'f_published_at' }.first  
103 - assert_equal :f_published_at, f_published[:solr_field]  
104 - assert_equal :date, f_published[:type]  
105 - assert_equal "Published date", f_published[:label]  
106 - hash = {"[NOW-1YEARS TO NOW/DAY]"=>"Last year", "[* TO NOW-1YEARS/DAY]"=>"Older than one year"}  
107 - assert_equal hash, f_published[:queries]  
108 - end  
109 -  
110 - should 'get label of a facet' do  
111 - f = TestModel.facet_by_id(:f_type)  
112 - assert_equal f[:label], 'Type'  
113 - end  
114 -  
115 - should "get facets' queries" do  
116 - f = TestModel.facet_by_id(:f_published_at)  
117 - assert_equal f[:queries]['[* TO NOW-1YEARS/DAY]'], 'Older than one year'  
118 - end  
119 -  
120 - should 'not map_facet_results without map_facets_for' do  
121 - assert_raise RuntimeError do  
122 - f = TestModel.facet_by_id(:f_published_at)  
123 - TestModel.map_facet_results f, @facet_params, @facets, @all_facets, {}  
124 - end  
125 - end  
126 -  
127 - should 'show correct ordering' do  
128 - assert_equal TestModel.facets_order, [:f_type, :f_published_at]  
129 - end  
130 -  
131 - should 'return facet options hash in acts_as_solr format' do  
132 - options = TestModel.facets_find_options()[:facets]  
133 - assert_equal [:f_type], options[:fields]  
134 - assert_equivalent ["f_published_at:[NOW-1YEARS TO NOW/DAY]", "f_published_at:[* TO NOW-1YEARS/DAY]"], options[:query]  
135 - end  
136 -  
137 - should 'return browse options hash in acts_as_solr format' do  
138 - options = TestModel.facets_find_options()[:facets]  
139 - assert_equal options[:browse], []  
140 -  
141 - options = TestModel.facets_find_options({'f_published_at' => '[* TO NOW-1YEARS/DAY]'})[:facets]  
142 - assert_equal options[:browse], ['f_published_at:[* TO NOW-1YEARS/DAY]']  
143 - end  
144 -  
145 - should 'sort facet results alphabetically' do  
146 - facets = TestModel.map_facets_for(Environment.default)  
147 - facet = facets.select{ |f| f[:id] == 'f_type' }.first  
148 - facet_data = TestModel.map_facet_results facet, @facet_params, @facets, @all_facets, {}  
149 - sorted = TestModel.facet_result_sort(facet, facet_data, :alphabetically)  
150 - assert_equal sorted,  
151 - [["Folder", "Folder", 3], ["Gallery", "Gallery", 1], ["TextArticle", 'Text', 15], ["UploadedFile", "Uploaded File", 6]]  
152 - end  
153 -  
154 - should 'sort facet results by count' do  
155 - facets = TestModel.map_facets_for(Environment.default)  
156 - facet = facets.select{ |f| f[:id] == 'f_type' }.first  
157 - facet_data = TestModel.map_facet_results facet, @facet_params, @facets, @all_facets, {}  
158 - sorted = TestModel.facet_result_sort(facet, facet_data, :count)  
159 - assert_equal sorted,  
160 - [["TextArticle", "Text", 15], ["UploadedFile", "Uploaded File", 6], ["Folder", "Folder", 3], ["Gallery", "Gallery", 1]]  
161 - end  
162 -end