Sha256: 2ac2f1d77708d3a55726d17791e9026b07bf6a52a0c756533ea0211dfdab0ae2

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

require 'spec_helper'

describe ROM::Env do
  include_context 'users and tasks'

  before do
    setup.relation(:users) do
      def by_name(name)
        restrict(name: name).project(:name)
      end
    end

    setup.relation(:tasks)

    setup.mappers do
      define(:users) do
        attribute :name
        attribute :email
      end

      define(:name_list, parent: :users) do
        attribute :name
        exclude :email
      end
    end
  end

  describe '#relation' do
    it 'yields selected relation to the block and returns a loaded relation' do
      result = rom.relation(:users) { |r| r.by_name('Jane') }.as(:name_list)

      expect(result.call).to match_array([{ name: 'Jane' }])
    end

    it 'returns lazy-mapped relation' do
      by_name = rom.relation(:users).as(:name_list).by_name

      expect(by_name['Jane']).to match_array([{ name: 'Jane' }])
    end

    it 'returns lazy relation without mappers when mappers are not defined' do
      expect(rom.relation(:tasks)).to be_instance_of(ROM::Relation::Lazy)
      expect(rom.relation(:tasks).relation).to be(rom.relations.tasks)
    end
  end

  describe '#mappers' do
    it 'returns mappers for all relations' do
      expect(rom.mappers.users).to eql(rom.readers.users.mappers)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rom-0.6.0.beta3 spec/unit/rom/env_spec.rb
rom-0.6.0.beta2 spec/unit/rom/env_spec.rb
rom-0.6.0.beta1 spec/unit/rom/env_spec.rb