Sha256: 6aeb875ac4053cf0ae083ba7cac8fd31bfb28961d12a3734a0c7cdacaab233ac

Contents?: true

Size: 1.6 KB

Versions: 28

Compression:

Stored size: 1.6 KB

Contents

require 'spec_helper'

RSpec::Matchers.define :be_attributes_as do |list|
  match do |other|
    other.each_with_index.map do |item, idx|
      item.relation.name == list[idx][0] && item.name.to_s == list[idx][1]
    end.all?
  end
end

RSpec.describe 'Relation', type: :helper do

  context 'on resolving columns' do
    subject { Post.unscoped.method(:resolve_column) }

    def attribute(relation, name)
      result = Arel::Attributes::Attribute.new
      result.relation = relation
      result.name = name
      result
    end

    it 'asserts sql literals' do
      check = ['name', 'other.title']
      expect(subject.call(check)).to eql(check)
    end

    it 'asserts attribute symbols' do
      check = [:title, :content]
      result = [['posts', 'title'], ['posts', 'content']]
      expect(subject.call(check)).to be_attributes_as(result)
    end

    it 'asserts direct hash relations' do
      check = [:title, author: :name]
      result = [['posts', 'title'], ['authors', 'name']]
      expect(subject.call(check)).to be_attributes_as(result)
    end

    it 'asserts multiple values on hash definition' do
      check = [author: [:name, :age]]
      result = [['authors', 'name'], ['authors', 'age']]
      expect(subject.call(check)).to be_attributes_as(result)
    end

    it 'raises on relation not present' do
      check = [tags: :name]
      expect{ subject.call(check) }.to raise_error(ArgumentError, /Relation for/)
    end

    it 'raises on third level access' do
      check = [author: [comments: :body]]
      expect{ subject.call(check) }.to raise_error(ArgumentError, /on third level/)
    end
  end

end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
torque-postgresql-3.3.1 spec/tests/relation_spec.rb
torque-postgresql-3.3.0 spec/tests/relation_spec.rb
torque-postgresql-3.2.2 spec/tests/relation_spec.rb
torque-postgresql-2.4.2 spec/tests/relation_spec.rb
torque-postgresql-2.4.1 spec/tests/relation_spec.rb
torque-postgresql-3.2.1 spec/tests/relation_spec.rb
torque-postgresql-2.4.0 spec/tests/relation_spec.rb
torque-postgresql-3.2.0 spec/tests/relation_spec.rb
torque-postgresql-3.1.0 spec/tests/relation_spec.rb
torque-postgresql-2.3.0 spec/tests/relation_spec.rb
torque-postgresql-3.0.1 spec/tests/relation_spec.rb
torque-postgresql-2.2.4 spec/tests/relation_spec.rb
torque-postgresql-3.0.0 spec/tests/relation_spec.rb
torque-postgresql-2.2.3 spec/tests/relation_spec.rb
torque-postgresql-2.2.2 spec/tests/relation_spec.rb
torque-postgresql-2.2.1 spec/tests/relation_spec.rb
torque-postgresql-2.2.0 spec/tests/relation_spec.rb
torque-postgresql-2.1.3 spec/tests/relation_spec.rb
torque-postgresql-2.1.2 spec/tests/relation_spec.rb
torque-postgresql-2.1.1 spec/tests/relation_spec.rb