Sha256: 30907c3b080ca65a48d6f8ecfc8db6a059c3a901a9dbfa4eb9aa6ecffeecd914

Contents?: true

Size: 1.99 KB

Versions: 6

Compression:

Stored size: 1.99 KB

Contents

require 'test_helper'

describe "Traject::Indexer.to_field" do
  before do 
    @indexer = Traject::Indexer.new
  end
  describe "checks it's arguments" do
    it "rejects nil first arg" do
      assert_raises(Traject::Indexer::NamingError) { @indexer.to_field(nil) }
    end
    it "rejects empty string first arg" do
      assert_raises(Traject::Indexer::NamingError) {@indexer.to_field("")}
    end
    it "rejects non-string first arg" do
      assert_raises(Traject::Indexer::NamingError) {@indexer.to_field(:symbol)}
    end
    
    it "rejects one-arg lambda" do
      assert_raises(Traject::Indexer::ArityError) do
        @indexer.to_field("foo") do |one_arg|
        end
      end
    end
    it "rejects four-arg lambda" do
      assert_raises(Traject::Indexer::ArityError) do 
        @indexer.to_field("foo") do |one_arg, two_arg, three_arg, four_arg|
        end
      end
    end
    it "accepts two arg lambda" do
      @indexer.to_field("foo") do |one, two|
      end
    end
    it "accepts three arg lambda" do
      @indexer.to_field("foo") {|one, two, three| one }
    end
    it "accepts variable lambda" do
      @indexer.to_field("foo") do |*variable|
      end
    end
  end
  
  describe "gives location in error message" do

    it "finds no previous field on initial error" do
      begin
        @indexer.to_field('') {|one, two| }   # bad field name
        flunk("Should have rejected empty field name")
      rescue Traject::Indexer::NamingError => e
        assert_match(/no previous named fields/, e.message)
      rescue 
        flunk("Should only fail with a NamingError")
      end
    end

    it "finds first (only) field on error" do
      begin
        @indexer.to_field('foo') {|one, two| }
        @indexer.to_field('') {|one, two| }   # bad field name
        flunk("Should have rejected empty field name")
      rescue Traject::Indexer::NamingError => e
        assert_match(/foo/, e.message)
      rescue 
        flunk("Should only fail with a NamingError")
      end
    end
  end
  
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
traject-0.13.2 test/indexer/to_field_test.rb
traject-0.13.1 test/indexer/to_field_test.rb
traject-0.13.0 test/indexer/to_field_test.rb
traject-0.12.0 test/indexer/to_field_test.rb
traject-0.11.0 test/indexer/to_field_test.rb
traject-0.10.0 test/indexer/to_field_test.rb