Sha256: 8fbb53778f3dab3cd30a2759d4a67e83dd3e27e44678ffd580debca4fb9e6674

Contents?: true

Size: 1.19 KB

Versions: 9

Compression:

Stored size: 1.19 KB

Contents

require "spec_helper"

describe Yaoc::ConverterBuilder do
  subject{
    ot = other_converter
    is_col = is_collection

    Yaoc::ConverterBuilder.new().tap{|converter|
      converter.add_mapping do
        fetch_with :[]
        rule to: :id,
             from: :name,
             is_collection: is_col,
             object_converter: ot
      end
    }

  }

  let(:other_converter){
    Class.new() do
      def to_proc
        @proc ||= ->(index, *args){
          [nil, nil, :my_result_1, nil,  :my_result_2][index]
        }
      end

      def to_a
        [self]
      end

    end.new
  }

  let(:is_collection){
    false
  }

  describe "#converter_to_proc" do

    it "creates a converter proc" do
      expect(other_converter.to_proc).to receive(:call).with(2).and_return(:my_result)
      expect(subject.converter(nil, nil).map_0000_name_to_id({:name => 2},{})).to eq(id: :my_result)
    end

    context "value to convert is a collection" do
      let(:is_collection){
        true
      }

      it "creates a converter proc for collections" do
        expect(subject.converter(nil, nil).map_0000_name_to_id({:name => [2, 4]},{})).to eq(id: [:my_result_1, :my_result_2])
      end

    end
  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
yaoc-0.0.13 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.12 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.11 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.10 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.9 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.8 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.7 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.6 spec/integration/lib/yaoc/converter_builder_spec.rb
yaoc-0.0.5 spec/integration/lib/yaoc/converter_builder_spec.rb