Sha256: 5ac4277394abc52edd144855165c2d120d8c2e726c89252d2607a71b11804df9

Contents?: true

Size: 1.32 KB

Versions: 14

Compression:

Stored size: 1.32 KB

Contents

require 'spec_helper'

RSpec.describe ROM::Relation::Curried do
  include_context 'gateway only'
  include_context 'users and tasks'

  let(:users_relation) do
    Class.new(ROM::Memory::Relation) do
      def by_name(name)
        restrict(name: name)
      end

      def find(criteria)
        restrict(criteria)
      end
    end.new(users_dataset)
  end

  describe '#call' do
    let(:relation) { users_relation.by_name.call('Jane') }

    it 'materializes a relation' do
      expect(relation).to match_array([
        name: 'Jane', email: 'jane@doe.org'
      ])
    end

    it 'returns a loaded relation' do
      expect(relation.source).to eql(users_relation.by_name('Jane'))
    end
  end

  describe '#respond_to?' do
    it 'returns true if wrapped relation responds to a method' do
      expect(users_relation.by_name).to respond_to(:dataset)
    end

    it 'returns false if wrapped relation does not respond to a method' do
      expect(users_relation.by_name).not_to respond_to(:not_here)
    end
  end

  describe '#method_missing' do
    it 'forwards to the relation' do
      expect(users_relation.by_name.dataset).to eql(users_relation.dataset)
    end

    it 'does not forward to the relation when method is auto-curried' do
      expect { users_relation.by_name.find }.to raise_error(NoMethodError, /find/)
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
rom-3.0.1 spec/unit/rom/relation/curried_spec.rb
rom-3.0.0 spec/unit/rom/relation/curried_spec.rb
rom-3.0.0.rc2 spec/unit/rom/relation/curried_spec.rb
rom-3.0.0.rc1 spec/unit/rom/relation/curried_spec.rb
rom-3.0.0.beta3 spec/unit/rom/relation/curried_spec.rb
rom-3.0.0.beta2 spec/unit/rom/relation/curried_spec.rb
rom-3.0.0.beta1 spec/unit/rom/relation/curried_spec.rb
rom-2.0.2 spec/unit/rom/relation/curried_spec.rb
rom-2.0.1 spec/unit/rom/relation/curried_spec.rb
rom-2.0.0 spec/unit/rom/relation/curried_spec.rb
rom-1.0.0 spec/unit/rom/relation/curried_spec.rb
rom-1.0.0.rc1 spec/unit/rom/relation/curried_spec.rb
rom-1.0.0.beta2 spec/unit/rom/relation/curried_spec.rb
rom-1.0.0.beta1 spec/unit/rom/relation/curried_spec.rb