Sha256: a1579bfe98de003a660ed33bd277e9975b64fc3fac5d2511058dcb560d5a841f

Contents?: true

Size: 1.55 KB

Versions: 26

Compression:

Stored size: 1.55 KB

Contents

# encoding: utf-8
#
require 'spec_helper'

require 'ostruct'

describe "special sorting" do

  before(:each) do
    Picky::Indexes.clear_indexes
  end

  it 'returns exact results first' do
    data = Picky::Index.new :sorted do
      category :first, partial: Picky::Partial::Substring.new(from: 1)
      category :last, partial: Picky::Partial::Substring.new(from: 1)
    end
    
    SortedThing = Struct.new :id, :first, :last
    
    things = []
    things << SortedThing.new(1, 'Abracadabra', 'Mirgel')
    things << SortedThing.new(2, 'Abraham',     'Minder')
    things << SortedThing.new(3, 'Azzie',       'Mueller')
    
    sorted_by_first = things.sort_by &:first
    sorted_by_last  = things.sort_by &:last
    
    # We give each index a differently sorted source.
    #
    data[:first].source = sorted_by_first
    data[:last].source  = sorted_by_last
    
    data.index
    
    try = Picky::Search.new data
    
    # The category in which more results
    # are found determines the sort order.
    #

    # If there is the same number of results,
    # the category of the last word determines
    # the order.
    #
    try.search('a').ids.should == [1,2,3]
    try.search('m').ids.should == [2,1,3]
    try.search('a* m').ids.should == [2,1,3]
    try.search('m* a').ids.should == [1,2,3]

    # If one category has more "results",
    # it is chosen for ordering.
    #
    try.search('m* ab').ids.should == [2,1]
    try.search('ab* m').ids.should == [2,1]
    try.search('mi* a').ids.should == [1,2]
    try.search('a* mi').ids.should == [1,2]
  end
  
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
picky-4.16.0 spec/functional/sorting_spec.rb
picky-4.15.1 spec/functional/sorting_spec.rb
picky-4.15.0 spec/functional/sorting_spec.rb
picky-4.14.0 spec/functional/sorting_spec.rb
picky-4.13.1 spec/functional/sorting_spec.rb
picky-4.13.0 spec/functional/sorting_spec.rb
picky-4.12.13 spec/functional/sorting_spec.rb
picky-4.12.12 spec/functional/sorting_spec.rb
picky-4.12.11 spec/functional/sorting_spec.rb
picky-4.12.10 spec/functional/sorting_spec.rb
picky-4.12.8 spec/functional/sorting_spec.rb
picky-4.12.7 spec/functional/sorting_spec.rb
picky-4.12.6 spec/functional/sorting_spec.rb
picky-4.12.5 spec/functional/sorting_spec.rb
picky-4.12.4 spec/functional/sorting_spec.rb
picky-4.12.3 spec/functional/sorting_spec.rb
picky-4.12.2 spec/functional/sorting_spec.rb
picky-4.12.1 spec/functional/sorting_spec.rb
picky-4.12.0 spec/functional/sorting_spec.rb
picky-4.11.3 spec/functional/sorting_spec.rb