Sha256: 17077a1ae93dc2f68eaeb2256da08211cbca4ade1f6a610aa5627d27c3f48d4e

Contents?: true

Size: 1.99 KB

Versions: 6

Compression:

Stored size: 1.99 KB

Contents

require 'test_helper'

class SearchableTest < ActiveSupport::TestCase

  context 'Update search text on save' do

    should 'update name' do
      model = NameSearchable.new
      assert model.save
      assert_equal 'name', model.search_text
    end

    should 'update text' do
      model = NameEmailSearchable.new
      assert model.save
      assert_equal 'name email@abc.com', model.search_text
    end
    should 'update text handle nil values' do
      model = NameEmailCodeSearchable.new
      assert model.save
      assert_equal 'name email@abc.com', model.search_text
    end
    should 'update text with code' do
      model = NameEmailCodeSearchable.new
      model.code = 'FOOBar'
      assert model.save
      assert_equal 'name email@abc.com foobar', model.search_text
    end
  end

  context 'search for items' do
    should 'update text' do
      NameEmailSearchable.create
      NameEmailSearchable.create
      NameEmailSearchable.create
      model = NameEmailSearchable.new
      model.name = 'defJKL'
      assert model.save
      assert_not_nil model
      assert_equal 'defjkl email@abc.com', model.search_text
      assert_equal 1, NameEmailSearchable.matching_search_text('defjkl').count
    end
    should 'return sort order' do
      assert_equal [['name', 1], ['email', 1]], NameEmailSearchable.sort_order
    end
  end
end

class NameSearchable
  include Mongoid::Document
  include SearchAble
  field :name, type: String, default: 'Name'
  field :email, type: String, default: 'email@abc.com'
end

class NameEmailSearchable
  include Mongoid::Document
  include SearchAble
  field :name, type: String, default: 'Name'
  field :email, type: String, default: 'email@abc.com'

  def search_fields
    %w[name email]
  end
end

class NameEmailCodeSearchable
  include Mongoid::Document
  include SearchAble
  field :name, type: String, default: 'Name'
  field :email, type: String, default: 'email@abc.com'
  field :code, type: String

  private

  def search_fields
    %w(name email code)
  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
web47core-0.1.4 test/models/concerns/search_able_test.rb
web47core-0.1.3 test/models/concerns/search_able_test.rb
web47core-0.1.2 test/models/concerns/search_able_test.rb
web47core-0.1.1 test/models/concerns/search_able_test.rb
web47core-0.1.0 test/models/concerns/search_able_test.rb
web47core-0.0.10 test/models/concerns/search_able_test.rb