Sha256: 25a691eefe69320613626d4b715a788dd449a41e818a158209cc9fc543a73ab6
Contents?: true
Size: 1.63 KB
Versions: 2
Compression:
Stored size: 1.63 KB
Contents
require "spec_helper" describe Yaoc::Strategies::ToArrayMapping do subject{ Struct.new(:to_convert) do include Yaoc::MappingBase self.mapping_strategy = Yaoc::Strategies::ToArrayMapping end } let(:mapper){ subject.new(source_object) } let(:source_object){ {id: 1, name: "paul"} } let(:expected_array){ [1, "paul"] } describe ".call" do it "creates a hash from a object" do subject.map(to: 0, from: :id) subject.map(to: 1, from: :name) expect(mapper.call).to eq(expected_array) end it "uses my converter proc" do subject.map(to: 0, from: :id) subject.map(to: 3, from: :fullname, converter: ->(source, result){ fill_result_with_value(result, 3, "#{source.fetch(:name)} Hello World") }) ext_expectation = expected_array.clone ext_expectation[3] = "#{ext_expectation[1]} Hello World" ext_expectation[1] = nil ext_expectation[2] = nil expect(mapper.call).to eq(ext_expectation) end context "changed fetcher method" do let(:source_object){ Struct.new(:id, :name).new(1, "paul") } it "uses custom fetcher methods" do subject.map(to: 0, from: :id) subject.map(to: 1, from: :name) def mapper.fetcher :public_send end expect(mapper.call).to eq(expected_array) end it "works with arrays" do subject.map(to: 1, from: 0) subject.map(to: 0, from: 1) def mapper.fetcher :[] end mapper.to_convert = [1, "paul"] expect(mapper.call).to eq(expected_array.reverse) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yaoc-0.0.8 | spec/unit/lib/yaoc/strategies/to_array_mapping_spec.rb |
yaoc-0.0.7 | spec/unit/lib/yaoc/strategies/to_array_mapping_spec.rb |