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 @@
  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   -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