To edit pages or tickets please login with username/password: aaf/aaf

Changeset 246

Show
Ignore:
Timestamp:
09/23/07 08:58:20 (1 year ago)
Author:
jk
Message:

also set offset to 0 in ar_find_by_contents

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/demo/app/models/comment.rb

    r142 r246  
    1515  # do this in our custom to_doc method) 
    1616  acts_as_ferret( :store_class_name => true,  
    17                   :remote           => ENV['AAF_REMOTE'],  # for testing drb remote indexing 
     17                  :remote           => ENV['AAF_REMOTE'] == 'true',  # for testing drb remote indexing 
    1818                  :additional_fields => { 
    1919                    :added => { :index => :untokenized, :store => :yes, :ignore => true } 
  • trunk/demo/app/models/shared_index1.rb

    r186 r246  
    44  acts_as_ferret( :fields       => { :name => { :store => :yes } },  
    55                  :single_index => true,  
    6                   :remote       => ENV['AAF_REMOTE']
     6                  :remote       => ENV['AAF_REMOTE'] == 'true'
    77                  :ferret       => { :default_field => DEFAULT_FIELDS }  
    88                ) 
  • trunk/demo/app/models/shared_index2.rb

    r169 r246  
    22  acts_as_ferret( { :fields       => { :name => { :store => :yes } },  
    33                    :single_index => true,  
    4                     :remote       => ENV['AAF_REMOTE'] },  
     4                    :remote       => ENV['AAF_REMOTE'] == 'true' },  
    55                  { :default_field => SharedIndex1::DEFAULT_FIELDS } ) 
    66end 
  • trunk/demo/test/functional/contents_controller_test.rb

    r232 r246  
    4646 
    4747    assert_response :redirect 
    48     assert_redirected_to :action => 'list' 
     48    assert_redirected_to contents_url 
    4949 
    5050    assert_equal num_contents + 1, Content.count 
  • trunk/demo/test/unit/content_test.rb

    r244 r246  
    3030  # weiter: single index / multisearch lazy loading 
    3131  def test_lazy_loading 
    32     results = Content.find_by_contents 'description', :lazy => true 
     32    results = Content.find_with_ferret 'description', :lazy => true 
    3333    assert_equal 1, results.size 
    3434    result = results.first 
     
    4848    [ '"A.s. Haakon"', 'A.s. Haakon', 'à
    4949mot A/S', 'A/S' ].each do |query| 
    50       assert_equal content, Content.find_by_contents(query).first, query 
     50      assert_equal content, Content.find_with_ferret(query).first, query 
    5151    end 
    5252  end 
     
    6868    assert_equal "the <em>new</em> description", highlight.first 
    6969 
    70     c1 = Content.find_by_contents('new description').first 
     70    c1 = Content.find_with_ferret('new description').first 
    7171    assert_equal c, c1 
    7272    highlight = c1.highlight('new') 
     
    8585    content.save 
    8686    assert content.ferret_enabled? 
    87     assert Content.find_by_contents('"find me"').empty? 
     87    assert Content.find_with_ferret('"find me"').empty? 
    8888 
    8989    content.save 
    9090    assert content.ferret_enabled? 
    91     assert_equal content, Content.find_by_contents('"find me"').first 
     91    assert_equal content, Content.find_with_ferret('"find me"').first 
    9292  end 
    9393 
     
    9999    2.times do  
    100100      content.save 
    101       assert Content.find_by_contents('"find me"').empty? 
     101      assert Content.find_with_ferret('"find me"').empty? 
    102102      assert !content.ferret_enabled? 
    103103    end 
     
    106106    content.save 
    107107    assert content.ferret_enabled? 
    108     assert_equal content, Content.find_by_contents('"find me"').first 
     108    assert_equal content, Content.find_with_ferret('"find me"').first 
    109109  end 
    110110 
     
    116116    2.times do  
    117117      content.save 
    118       assert Content.find_by_contents('"find me"').empty? 
     118      assert Content.find_with_ferret('"find me"').empty? 
    119119      assert !Content.ferret_enabled? 
    120120      assert !content.ferret_enabled? 
     
    130130    assert content.ferret_enabled? 
    131131    assert Content.ferret_enabled? 
    132     assert_equal content, Content.find_by_contents('"find me"').first 
     132    assert_equal content, Content.find_with_ferret('"find me"').first 
    133133  end 
    134134 
     
    138138      2.times do 
    139139        content.save 
    140         assert Content.find_by_contents('"find me"').empty? 
     140        assert Content.find_with_ferret('"find me"').empty? 
    141141        assert !content.ferret_enabled? 
    142142      end 
    143143    end 
    144144    assert content.ferret_enabled? 
    145     assert Content.find_by_contents('"find me"').empty? 
     145    assert Content.find_with_ferret('"find me"').empty? 
    146146 
    147147    content.disable_ferret(:index_when_finished) do 
    148148      2.times do 
    149149        content.save 
    150         assert Content.find_by_contents('"find me"').empty? 
     150        assert Content.find_with_ferret('"find me"').empty? 
    151151        assert !content.ferret_enabled? 
    152152      end 
    153153    end 
    154154    assert content.ferret_enabled? 
    155     assert_equal content, Content.find_by_contents('"find me"').first 
     155    assert_equal content, Content.find_with_ferret('"find me"').first 
    156156  end 
    157157 
     
    161161      2.times do 
    162162        content.save 
    163         assert Content.find_by_contents('"find me"').empty? 
     163        assert Content.find_with_ferret('"find me"').empty? 
    164164        assert !content.ferret_enabled? 
    165165        assert !Content.ferret_enabled? 
     
    168168    assert content.ferret_enabled? 
    169169    assert Content.ferret_enabled? 
    170     assert Content.find_by_contents('"find me"').empty? 
     170    assert Content.find_with_ferret('"find me"').empty? 
    171171    content.save 
    172     assert_equal content, Content.find_by_contents('"find me"').first 
     172    assert_equal content, Content.find_with_ferret('"find me"').first 
    173173  end 
    174174 
     
    199199                          :description => 'look - an ß') 
    200200    content.save 
    201     result = Content.find_by_contents('ÀöÌ') 
     201    result = Content.find_with_ferret('ÀöÌ') 
    202202    assert_equal content, result.first 
    203     result = Content.find_by_contents('ÃŒml*') 
     203    result = Content.find_with_ferret('ÃŒml*') 
    204204    assert_equal content, result.first 
    205     result = Content.find_by_contents('ß') 
     205    result = Content.find_with_ferret('ß') 
    206206    assert_equal content, result.first 
    207207  end 
     
    230230 
    231231  def test_more_like_this 
    232     assert Content.find_by_contents('lorem ipsum').empty? 
     232    assert Content.find_with_ferret('lorem ipsum').empty? 
    233233    @c1 = Content.new( :title => 'Content item 1',  
    234234                       :description => 'lorem ipsum dolor sit amet. lorem.' ) 
     
    237237                       :description => 'lorem ipsum dolor sit amet. lorem ipsum.' ) 
    238238    @c2.save 
    239     assert_equal 2, Content.find_by_contents('lorem ipsum').size 
     239    assert_equal 2, Content.find_with_ferret('lorem ipsum').size 
    240240    similar = @c1.more_like_this(:field_names => [:description], :min_doc_freq => 1, :min_term_freq => 1) 
    241241    assert_equal 1, similar.size 
     
    244244 
    245245  def test_more_like_this_new_record 
    246     assert Content.find_by_contents('lorem ipsum').empty? 
     246    assert Content.find_with_ferret('lorem ipsum').empty? 
    247247    @c1 = Content.new( :title => 'Content item 1',  
    248248                       :description => 'lorem ipsum dolor sit amet. lorem.' ) 
     
    250250                       :description => 'lorem ipsum dolor sit amet. lorem ipsum.' ) 
    251251    @c2.save 
    252     assert_equal 1, Content.find_by_contents('lorem ipsum').size 
     252    assert_equal 1, Content.find_with_ferret('lorem ipsum').size 
    253253    similar = @c1.more_like_this(:field_names => [:description], :min_doc_freq => 1, :min_term_freq => 1) 
    254254    assert_equal 1, similar.size 
     
    261261   
    262262  def test_update 
    263     contents_from_ferret = Content.find_by_contents('useless') 
     263    contents_from_ferret = Content.find_with_ferret('useless') 
    264264    assert_equal 1, contents_from_ferret.size 
    265265    assert_equal contents(:first).id, contents_from_ferret.first.id 
    266266    contents(:first).description = 'Updated description, still useless' 
    267267    contents(:first).save 
    268     contents_from_ferret = Content.find_by_contents('useless') 
     268    contents_from_ferret = Content.find_with_ferret('useless') 
    269269    assert_equal 1, contents_from_ferret.size 
    270270    assert_equal contents(:first).id, contents_from_ferret.first.id 
    271     contents_from_ferret = Content.find_by_contents('updated AND description') 
     271    contents_from_ferret = Content.find_with_ferret('updated AND description') 
    272272    assert_equal 1, contents_from_ferret.size 
    273273    assert_equal contents(:first).id, contents_from_ferret.first.id 
    274     contents_from_ferret = Content.find_by_contents('updated OR description') 
     274    contents_from_ferret = Content.find_with_ferret('updated OR description') 
    275275    assert_equal 1, contents_from_ferret.size 
    276276    assert_equal contents(:first).id, contents_from_ferret.first.id 
     
    282282    assert_equal 1, contents(:another).comment_count 
    283283    # retrieve all content objects having 2 comments 
    284     result = Content.find_by_contents('comment_count:2') 
     284    result = Content.find_with_ferret('comment_count:2') 
    285285    # TODO check why this range query returns 3 results 
    286     #result = Content.find_by_contents('comment_count:[2 TO 1000]') 
     286    #result = Content.find_with_ferret('comment_count:[2 TO 1000]') 
    287287    # p result 
    288288    assert_equal 2, result.size 
     
    293293  def test_sorting 
    294294    sorting = [ Ferret::Search::SortField.new(:id, :reverse => true) ] 
    295     result = Content.find_by_contents('comment_count:2', :sort => sorting) 
     295    result = Content.find_with_ferret('comment_count:2', :sort => sorting) 
    296296    assert result.first.id > result.last.id 
    297297 
    298298    sorting = [ Ferret::Search::SortField.new(:id) ] 
    299     result = Content.find_by_contents('comment_count:2', :sort => sorting) 
     299    result = Content.find_with_ferret('comment_count:2', :sort => sorting) 
    300300    assert result.first.id < result.last.id 
    301301 
     
    305305 
    306306 
    307     result = Content.find_by_contents('comment_count:2', :sort => sorting) 
     307    result = Content.find_with_ferret('comment_count:2', :sort => sorting) 
    308308    assert result.first.id > result.last.id 
    309309  end 
    310310   
    311311  def test_total_hits_multi 
    312     result = Content.total_hits('*:title OR *:comment', :models => [Comment]
     312    result = Content.total_hits('*:title OR *:comment', :multi => Comment
    313313    assert_equal 5, result 
    314314  end 
     
    316316  def test_multi_search_sorting 
    317317    sorting = [ Ferret::Search::SortField.new(:id) ] 
    318     result = Content.multi_search('*:title OR *:comment', [Comment], :sort => sorting) 
     318    result = Content.find_with_ferret('*:title OR *:comment', :multi => [Comment], :sort => sorting) 
    319319    assert_equal result.map(&:id).sort, result.map(&:id) 
    320320 
    321321    sorting = [ Ferret::Search::SortField.new(:title) ] 
    322     result = Content.multi_search('*:title OR *:comment', [Comment], :sort => sorting) 
     322    result = Content.find_with_ferret('*:title OR *:comment', :multi => [Comment], :sort => sorting) 
    323323    sorting = [ Ferret::Search::SortField.new(:title, :reverse => true) ] 
    324     result2 = Content.multi_search('*:title OR *:comment', [Comment], :sort => sorting) 
     324    result2 = Content.find_with_ferret('*:title OR *:comment', :multi => [Comment], :sort => sorting) 
    325325    assert result.any? 
    326326    assert result.map(&:id) != result2.map(&:id) 
    327327 
    328328    sorting = [ Ferret::Search::SortField::SCORE ] 
    329     result = Content.multi_search('*:title OR *:comment', [Comment], :sort => sorting) 
     329    result = Content.find_with_ferret('*:title OR *:comment', :multi => Comment, :sort => sorting) 
    330330    assert result.any? 
    331331    assert_equal result.map(&:ferret_score).sort.reverse, result.map(&:ferret_score) 
    332332 
    333333    sorting = [ Ferret::Search::SortField::SCORE_REV ] 
    334     result2 = Content.multi_search('*:title OR *:comment', [Comment], :sort => sorting) 
     334    result2 = Content.find_with_ferret('*:title OR *:comment', :multi => Comment, :sort => sorting) 
    335335    assert_equal result2.map(&:ferret_score).sort, result2.map(&:ferret_score) 
    336336    assert_equal result.map(&:ferret_score), result2.map(&:ferret_score).reverse 
     
    339339  def test_sort_class 
    340340    sorting = Ferret::Search::Sort.new(Ferret::Search::SortField.new(:id, :reverse => true)) 
    341     result = Content.find_by_contents('comment_count:2 OR comment_count:1', :sort => sorting) 
     341    result = Content.find_with_ferret('comment_count:2 OR comment_count:1', :sort => sorting) 
    342342    assert result.size > 2 
    343343    assert result.first.id > result.last.id 
    344     result = Content.find_by_contents('comment_count:2 OR comment_count:1', :sort => sorting, :limit => 2) 
     344    result = Content.find_with_ferret('comment_count:2 OR comment_count:1', :sort => sorting, :limit => 2) 
    345345    assert_equal 2, result.size 
    346346    assert result.first.id > result.last.id 
     
    349349  def test_sort_with_limit 
    350350    sorting = [ Ferret::Search::SortField.new(:id) ] 
    351     result = Content.find_by_contents('comment_count:2 OR comment_count:1', :sort => sorting) 
     351    result = Content.find_with_ferret('comment_count:2 OR comment_count:1', :sort => sorting) 
    352352    assert result.size > 2 
    353353    assert result.first.id < result.last.id 
    354     result = Content.find_by_contents('comment_count:2 OR comment_count:1', :sort => sorting, :limit => 2) 
     354    result = Content.find_with_ferret('comment_count:2 OR comment_count:1', :sort => sorting, :limit => 2) 
    355355    assert_equal 2, result.size 
    356356    assert result.first.id < result.last.id 
    357357 
    358358    sorting = [ Ferret::Search::SortField.new(:id, :reverse => true) ] 
    359     result = Content.find_by_contents('comment_count:2 OR comment_count:1', :sort => sorting) 
     359    result = Content.find_with_ferret('comment_count:2 OR comment_count:1', :sort => sorting) 
    360360    assert result.size > 2 
    361361    assert result.first.id > result.last.id 
    362     result = Content.find_by_contents('comment_count:2 OR comment_count:1', :sort => sorting, :limit => 2) 
     362    result = Content.find_with_ferret('comment_count:2 OR comment_count:1', :sort => sorting, :limit => 2) 
    363363    assert_equal 2, result.size 
    364364    assert result.first.id > result.last.id 
     
    409409    remove_index Content 
    410410    Content.create(:title => 'another one', :description => 'description') 
    411     contents_from_ferret = Content.find_by_contents('description:title') 
     411    contents_from_ferret = Content.find_with_ferret('description:title') 
    412412    assert_equal 1, contents_from_ferret.size 
    413413  end 
    414414  def test_find_rebuilds_index 
    415415    remove_index Content 
    416     contents_from_ferret = Content.find_by_contents('description:title') 
     416    contents_from_ferret = Content.find_with_ferret('description:title') 
    417417    assert_equal 1, contents_from_ferret.size 
    418418  end 
     
    420420  def test_multi_search_rebuilds_index 
    421421    remove_index Content 
    422     contents_from_ferret = Content.multi_search('description:title'
     422    contents_from_ferret = Content.find_with_ferret('description:title', :multi => Comment
    423423    assert_equal 1, contents_from_ferret.size 
    424424  end 
     
    435435  end 
    436436 
    437   def remove_index(clazz) 
    438     clazz.aaf_index.close # avoid io error when deleting the open index 
    439     FileUtils.rm_rf clazz.aaf_configuration[:index_dir] 
    440     assert !File.exists?("#{clazz.aaf_configuration[:index_dir]}/segments") 
    441   end 
    442  
    443   # segfaults (Feret 0.10.13) 
    444   #def test_multi_searcher 
    445   #  s = MultiSearcher.new([Searcher.new(Content.class_index_dir), Searcher.new(Comment.class_index_dir)]) 
    446   #  hits = s.search(TermQuery.new(:title,"title")) 
    447   #  assert_equal 1, hits.total_hits 
    448   #end 
    449    
    450437  def test_multi_search_find_options 
    451     contents_from_ferret = Content.multi_search('title', [], {}, :order => 'id desc') 
     438    contents_from_ferret = Content.find_with_ferret('title', { :multi => Comment }, :order => 'id desc') 
    452439    assert_equal 2, contents_from_ferret.size 
    453440    assert contents_from_ferret.first.id > contents_from_ferret.last.id 
    454     contents_from_ferret = Content.multi_search('title', [], {}, :order => 'id asc') 
     441    contents_from_ferret = Content.find_with_ferret('title', { :multi => Comment }, :order => 'id asc') 
    455442    assert contents_from_ferret.first.id < contents_from_ferret.last.id 
    456443 
    457     contents_from_ferret = Content.multi_search('title', [], {}, :limit => 1) 
     444    contents_from_ferret = Content.find_with_ferret('title', { :multi => Comment }, :limit => 1) 
    458445    assert_equal 1, contents_from_ferret.size 
    459446  end 
     
    498485 
    499486  def test_multi_search_lazy 
    500     contents_from_ferret = Content.multi_search('title', [Comment], :lazy => true) 
     487    contents_from_ferret = Content.find_with_ferret('title', :multi => Comment, :lazy => true) 
    501488    assert_equal 2, contents_from_ferret.size 
    502489    contents_from_ferret.each do |record| 
     
    567554  end 
    568555   
    569   def test_find_by_contents_boost 
     556  def test_find_with_ferret_boost 
    570557    # give description field higher boost: 
    571     contents_from_ferret = Content.find_by_contents('title:title OR description:title^200') 
     558    contents_from_ferret = Content.find_with_ferret('title:title OR description:title^200') 
    572559    assert_equal 2, contents_from_ferret.size 
    573560    assert_equal @another_content.id, contents_from_ferret.first.id 
     
    577564  def test_default_and_queries 
    578565    # multiple terms are ANDed by default... 
    579     contents_from_ferret = Content.find_by_contents('monkey description') 
     566    contents_from_ferret = Content.find_with_ferret('monkey description') 
    580567    assert contents_from_ferret.empty? 
    581568    # ...unless you connect them by OR 
    582     contents_from_ferret = Content.find_by_contents('monkey OR description') 
     569    contents_from_ferret = Content.find_with_ferret('monkey OR description') 
    583570    assert_equal 1, contents_from_ferret.size 
    584571    assert_equal contents(:first).id, contents_from_ferret.first.id 
     
    586573    # multiple terms, each term has to occur in a document to be found,  
    587574    # but they may occur in different fields 
    588     contents_from_ferret = Content.find_by_contents('useless title') 
     575    contents_from_ferret = Content.find_with_ferret('useless title') 
    589576    assert_equal 1, contents_from_ferret.size 
    590577    assert_equal contents(:first).id, contents_from_ferret.first.id 
    591578  end 
    592579   
    593   def test_find_by_contents 
    594  
    595     contents_from_ferret = Content.find_by_contents('lorem ipsum not here') 
     580  def test_find_with_ferret 
     581 
     582    contents_from_ferret = Content.find_with_ferret('lorem ipsum not here') 
    596583    assert contents_from_ferret.empty? 
    597584 
    598     contents_from_ferret = Content.find_by_contents('title') 
     585    contents_from_ferret = Content.find_with_ferret('title') 
    599586    assert_equal 2, contents_from_ferret.size 
    600587    # the title field has a higher boost value, so contents(:first) must be first in the list 
     
    604591      
    605592 
    606     contents_from_ferret = Content.find_by_contents('useless') 
     593    contents_from_ferret = Content.find_with_ferret('useless') 
    607594    assert_equal 1, contents_from_ferret.size 
    608595    assert_equal contents(:first).id, contents_from_ferret.first.id 
    609596     
    610597    # no monkeys here 
    611     contents_from_ferret = Content.find_by_contents('monkey') 
     598    contents_from_ferret = Content.find_with_ferret('monkey') 
    612599    assert contents_from_ferret.empty? 
    613600     
     
    615602 
    616603    # search for an exact string by enclosing it in " 
    617     contents_from_ferret = Content.find_by_contents('"useless title"') 
     604    contents_from_ferret = Content.find_with_ferret('"useless title"') 
    618605    assert contents_from_ferret.empty? 
    619     contents_from_ferret = Content.find_by_contents('"useless description"') 
     606    contents_from_ferret = Content.find_with_ferret('"useless description"') 
    620607    assert_equal 1, contents_from_ferret.size 
    621608    assert_equal contents(:first).id, contents_from_ferret.first.id 
    622609 
    623610    # wildcard query 
    624     contents_from_ferret = Content.find_by_contents('use*') 
     611    contents_from_ferret = Content.find_with_ferret('use*') 
    625612    assert_equal 1, contents_from_ferret.size 
    626613 
    627614    # ferret-bug ? wildcard queries don't seem to get lowercased even when 
    628615    # using StandardAnalyzer: 
    629     # contents_from_ferret = Content.find_by_contents('Ti*') 
     616    # contents_from_ferret = Content.find_with_ferret('Ti*') 
    630617    # we should find both 'Title' and 'title' 
    631618    # assert_equal 2, contents_from_ferret.size  
    632619    # theory: :wild_lower parser option isn't used 
    633620 
    634     contents_from_ferret = Content.find_by_contents('ti*') 
     621    contents_from_ferret = Content.find_with_ferret('ti*') 
    635622    # this time we find both 'Title' and 'title' 
    636623    assert_equal 2, contents_from_ferret.size 
    637624 
    638625    contents(:first).destroy 
    639     contents_from_ferret = Content.find_by_contents('ti*') 
     626    contents_from_ferret = Content.find_with_ferret('ti*') 
    640627    # should find only one now 
    641628    assert_equal 1, contents_from_ferret.size 
     
    643630  end 
    644631 
    645   def test_find_by_contents_options 
     632  def test_find_with_ferret_options 
    646633    # find options 
    647     contents_from_ferret = Content.find_by_contents('title', {}, :conditions => ["id=?",contents(:first).id]) 
     634    contents_from_ferret = Content.find_with_ferret('title', {}, :conditions => ["id=?",contents(:first).id]) 
    648635    assert_equal 1, contents_from_ferret.size 
    649636    assert_equal contents(:first), contents_from_ferret.first 
    650637     
    651638    # limit result set size to 1 
    652     contents_from_ferret = Content.find_by_contents('title', :limit => 1) 
     639    contents_from_ferret = Content.find_with_ferret('title', :limit => 1) 
    653640    assert_equal 1, contents_from_ferret.size 
    654641    assert_equal contents(:first), contents_from_ferret.first  
    655642     
    656643    # limit result set size to 1, starting with the second result 
    657     contents_from_ferret = Content.find_by_contents('title', :limit => 1, :offset => 1) 
     644    contents_from_ferret = Content.find_with_ferret('title', :limit => 1, :offset => 1) 
    658645    assert_equal 1, contents_from_ferret.size 
    659646    assert_equal @another_content.id, contents_from_ferret.first.id  
    660647 
    661648    # deprecated options, still supported 
    662     contents_from_ferret = Content.find_by_contents('title', :num_docs => 1, :first_doc => 1) 
     649    contents_from_ferret = Content.find_with_ferret('title', :num_docs => 1, :first_doc => 1) 
    663650    assert_equal 1, contents_from_ferret.size 
    664651    assert_equal @another_content.id, contents_from_ferret.first.id  
    665652      
     653  end 
     654 
     655  def test_multi_pagination 
     656    more_contents(true) 
     657 
     658    r = Content.find_with_ferret 'title OR comment', :multi => Comment, :per_page => 10, :sort => 'title' 
     659    assert_equal 60, r.total_hits 
     660    assert_equal 10, r.size 
     661    assert_equal "0", r.first.description 
     662    assert_equal "9", r.last.description 
     663    assert_equal 1, r.current_page 
     664    assert_equal 6, r.page_count 
     665 
     666    r = Content.find_with_ferret 'title OR comment', :multi => Comment, :page => '2', :per_page => 10, :sort => 'title' 
     667    assert_equal 60, r.total_hits 
     668    assert_equal 10, r.size 
     669    assert_equal "10", r.first.description 
     670    assert_equal "19", r.last.description 
     671    assert_equal 2, r.current_page 
     672    assert_equal 6, r.page_count 
     673 
     674    r = Content.find_with_ferret 'title OR comment', :multi => Comment, :page => 7, :per_page => 10, :sort => 'title' 
     675    assert_equal 60, r.total_hits 
     676    assert_equal 0, r.size 
    666677  end 
    667678 
     
    712723  end 
    713724 
     725  def test_multi_pagination_with_ar_conditions 
     726    more_contents(true) 
     727    id = Content.find_with_ferret('title').first.id 
     728    r = Content.find_with_ferret 'title OR comment', { :page => 1, :per_page => 10, :multi => Comment },  
     729                                          { :conditions => ["id != ?", id], :order => 'id ASC' } 
     730    assert_equal 59, r.total_hits 
     731    assert_equal 10, r.size 
     732    assert_equal "Comment for content 00", r.first.content 
     733    assert_equal "Comment for content 09", r.last.content 
     734    assert_equal 1, r.current_page 
     735    assert_equal 6, r.page_count 
     736 
     737    r = Content.find_with_ferret 'title OR comment', { :page => 6, :per_page => 10, :multi => Comment }, 
     738                                          { :conditions => [ "id != ?", id ], :order => 'id ASC' } 
     739    assert_equal 59, r.total_hits 
     740    assert_equal 9, r.size 
     741    assert_equal "21", r.first.description 
     742    assert_equal "29", r.last.description 
     743    assert_equal 6, r.current_page 
     744    assert_equal 6, r.page_count 
     745  end 
     746 
    714747  def test_pagination_with_more_conditions 
    715748    more_contents 
    716749 
    717750    r = Content.find_with_ferret 'title -description:0', { :page => 1, :per_page => 10 }, 
    718                                             { :conditions => "description != '9'", :order => 'title ASC' } 
     751                                            { :conditions => "contents.description != '9'", :order => 'title ASC' } 
    719752    assert_equal 28, r.total_hits 
    720753    assert_equal 10, r.size 
     
    762795 
    763796  protected 
    764   def more_contents 
     797 
     798  def more_contents(with_comments = false) 
     799    Comment.destroy_all if with_comments 
    765800    Content.destroy_all 
    766801    SpecialContent.destroy_all 
    767802    30.times do |i| 
    768       Content.create! :title => sprintf("title of Content %02d", i), :description => "#{i}" 
    769     end 
    770   end 
     803      c = Content.create! :title => sprintf("title of Content %02d", i), :description => "#{i}" 
     804      c.comments.create! :content => sprintf("Comment for content %02d", i) if with_comments 
     805    end 
     806  end 
     807 
     808  def remove_index(clazz) 
     809    clazz.aaf_index.close # avoid io error when deleting the open index 
     810    FileUtils.rm_rf clazz.aaf_configuration[:index_dir] 
     811    assert !File.exists?("#{clazz.aaf_configuration[:index_dir]}/segments") 
     812  end 
     813 
    771814end 

To edit pages or tickets please login with username/password: aaf/aaf