Sha256: 9b127fedd64a1aa1018429479930e6bfc7eb4e11af860813301bc02fc72d5a7d

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

require 'rom'
require 'rom/memory'
require 'rom/plugins/relation/view'

RSpec.describe ROM::Plugins::Relation::View do
  subject(:relation) { relation_class.new([]) }

  let(:relation_class) do
    Class.new(ROM::Memory::Relation) do
      use :view

      view(:base, [:id, :name]) do
        self
      end

      view(:ids, [:id]) do
        self
      end

      view(:names, [:name]) do |id|
        self
      end
    end
  end

  describe '#attributes' do
    it 'returns base view attributes by default' do
      expect(relation.attributes).to eql([:id, :name])
    end

    it 'returns attributes for a view' do
      expect(relation.ids.attributes).to eql([:id])
    end

    it 'returns attributes for a view with args' do
      expect(relation.names(1).attributes).to eql([:name])
    end

    it 'returns attributes for a curried view' do
      expect(relation.names.attributes).to eql([:name])
    end

    it 'returns correct arity for a curried view' do
      expect(relation.names.arity).to be(1)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rom-1.0.0 spec/unit/rom/plugins/relation/view_spec.rb
rom-1.0.0.rc1 spec/unit/rom/plugins/relation/view_spec.rb
rom-1.0.0.beta2 spec/unit/rom/plugins/relation/view_spec.rb
rom-1.0.0.beta1 spec/unit/rom/plugins/relation/view_spec.rb