Sha256: 87ab3739d4ddcfb005545d6fe929573a044a4f8f46db2f6d18349e1ba976d24c

Contents?: true

Size: 1.21 KB

Versions: 2

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_pk.attributes).to eql([:name])
      expect(users.by_pk(1).attributes).to eql([:name])
    end
  end

  describe '.view' do
    context 'using short syntax' do
      before do
        configuration.relation(:users) do
          view(:by_pk, [: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_pk) 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_pk) { |args| }
          end
        }.to raise_error(ArgumentError)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rom-repository-0.3.1 spec/unit/sql/relation_spec.rb
rom-repository-0.3.0 spec/unit/sql/relation_spec.rb