Sha256: 1083c198e2b47a1c0212da12899359d5c0673c8e9f2df993c49f3a602f6e93c2

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

RSpec.describe 'SQL Relation extensions' do
  include_context 'database'

  shared_context 'valid view' do
    let(:users) { rom.relation(:users) }

    it 'has valid column names' do
      expect(users.attributes).to eql([:id, :name])

      expect(users.by_id.attributes).to eql([:name])
      expect(users.by_id(1).attributes).to eql([:name])
    end
  end

  describe '.view' do
    context 'using short syntax' do
      before do
        configuration.relation(:users) do
          view(:by_id, [:name]) do |name|
            where(name: name).select(:name)
          end
        end
      end

      include_context 'valid view'
    end

    context 'with multi-block syntax' do
      before do
        configuration.relation(:users) do
          view(:by_id) do
            header [:name]

            relation do |name|
              where(name: name).select(:name)
            end
          end
        end
      end

      include_context 'valid view'
    end

    context 'with multi-block when first block has args' do
      it 'raises error' do
        expect {
          configuration.relation(:users) do
            view(:by_id) { |args| }
          end
        }.to raise_error(ArgumentError)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rom-repository-0.2.0 spec/unit/sql/relation_spec.rb
rom-repository-0.2.0.rc1 spec/unit/sql/relation_spec.rb
rom-repository-0.2.0.beta1 spec/unit/sql/relation_spec.rb