Sha256: b275b379f175433ffac1db74580979502aa2ffa5f7062552520921073a0706e5

Contents?: true

Size: 731 Bytes

Versions: 3

Compression:

Stored size: 731 Bytes

Contents

require 'spec_helper'

require 'ostruct'

describe ROM::Mapper do
  subject(:mapper) { ROM::Mapper.build(ROM::Header.coerce(relation.header.zip), user_model) }

  let(:relation) { ROM::Relation.new(dataset, [:id, :name]) }
  let(:dataset) { ROM::Adapter::Memory::Dataset.new([{id: 1, name: 'Jane'}, {id: 2, name: 'Joe'}]) }
  let(:user_model) { Class.new(OpenStruct) { include Equalizer.new(:id, :name) } }

  let(:jane) { user_model.new(id: 1, name: 'Jane') }
  let(:joe) { user_model.new(id: 2, name: 'Joe') }

  describe "#each" do
    it "yields all mapped objects" do
      result = []

      relation.each do |tuple|
        result << mapper.load(tuple)
      end

      expect(result).to eql([jane, joe])
    end
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rom-0.4.0 spec/unit/rom/mapper_spec.rb
rom-0.3.1 spec/unit/rom/mapper_spec.rb
rom-0.3.0 spec/unit/rom/mapper_spec.rb