Commit d052d8e5804136c4847a9ae88db423729e2e131a

Authored by Braulio Bhavamitra
1 parent 7e54e8ab

Add initial acts_as_faceted unit test

Showing 1 changed file with 74 additions and 0 deletions   Show diff stats
test/unit/acts_as_faceted_test.rb 0 → 100644
... ... @@ -0,0 +1,74 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class TestModel < ActiveRecord::Base
  4 + def self.f_type_proc(klass)
  5 + klass.constantize
  6 + h = {
  7 + 'UploadedFile' => "Uploaded File",
  8 + 'TextArticle' => "Text",
  9 + 'Folder' => "Folder",
  10 + 'Event' => "Event",
  11 + 'EnterpriseHomepage' => "Homepage",
  12 + 'Gallery' => "Gallery",
  13 + 'Blog' => "Blog",
  14 + 'Forum' => "Forum"
  15 + }
  16 + h[klass]
  17 + end
  18 + def self.f_profile_type_proc(klass)
  19 + h = {
  20 + 'Enterprise' => "Enterprise",
  21 + 'Community' => "Community",
  22 + 'Person' => "Person",
  23 + 'BscPlugin::Bsc' => "BSC"
  24 + }
  25 + h[klass]
  26 + end
  27 + acts_as_faceted :fields => {
  28 + :f_type => {:label => 'Type', :proc => proc{|klass| f_type_proc(klass)}},
  29 + :f_published_at => {:type => :date, :label => 'Published date', :queries => {'[* TO NOW-1YEARS/DAY]' => "Older than one year", '[NOW-1YEARS TO NOW/DAY]' => "Last year"}},
  30 + :f_profile_type => {:label => 'Author', :proc => proc{|klass| f_profile_type_proc(klass)}},
  31 + :f_category => {:label => 'Categories'}},
  32 + :order => [:f_type, :f_published_at, :f_profile_type, :f_category]
  33 +end
  34 +
  35 +class ActsAsFacetedTest < Test::Unit::TestCase
  36 + def setup
  37 + @facets = {
  38 + "facet_fields"=> {
  39 + "f_profile_type_facet"=>{"Person"=>29},
  40 + "f_type_facet"=>{"TextArticle"=>15, "Blog"=>3, "Folder"=>3, "Forum"=>1, "UploadedFile"=>6, "Gallery"=>1},
  41 + "f_category_facet"=>{}},
  42 + "facet_ranges"=>{}, "facet_dates"=>{},
  43 + "facet_queries"=>{"f_published_at_d:[* TO NOW-1YEARS/DAY]"=>10, "f_published_at_d:[NOW-1YEARS TO NOW/DAY]"=>19}
  44 + }
  45 + end
  46 +
  47 + should 'iterate over each result' do
  48 + f = TestModel.facet_by_id(:f_type)
  49 + r = []
  50 + TestModel.each_facet_result(f, @facets, {}) { |i| r.push i }
  51 + assert_equal r, [["TextArticle", 'Text', 15], ["Blog", "Blog", 3], ["Folder", "Folder", 3], ["Forum", "Forum", 1], ["UploadedFile", "Uploaded File", 6], ["Gallery", "Gallery", 1]]
  52 +
  53 + f = TestModel.facet_by_id(:f_published_at)
  54 + r = []
  55 + TestModel.each_facet_result(f, @facets, {}) { |i| r.push i }
  56 + assert_equal r, [ ["[* TO NOW-1YEARS/DAY]", "Older than one year", 10], ["[NOW-1YEARS TO NOW/DAY]", "Last year", 19] ]
  57 + end
  58 +
  59 + should 'query label of a facet' do
  60 + l = TestModel.facet_by_id(:f_type)
  61 + assert_equal l[:label], 'Type'
  62 + l = TestModel.facet_by_id(:f_published_at)
  63 + assert_equal l[:queries]['[* TO NOW-1YEARS/DAY]'], 'Older than one year'
  64 + end
  65 +
  66 + should 'return browse options hash in acts_as_solr format' do
  67 + o = TestModel.facets_find_options()[:facets]
  68 + assert_equal o[:browse], []
  69 +
  70 + o = TestModel.facets_find_options({'f_profile_type' => 'Person', 'f_published_at' => '[* TO NOW-1YEARS/DAY]'})[:facets]
  71 + assert_equal o[:browse], ['f_profile_type:"Person"', 'f_published_at:[* TO NOW-1YEARS/DAY]']
  72 + end
  73 +
  74 +end
... ...