activerecord-hackery--ransack/spec/ransack/adapters/active_record/context_spec.rb

52 lines
1.7 KiB
Ruby

require 'spec_helper'
module Ransack
module Adapters
module ActiveRecord
describe Context do
subject { Context.new(Person) }
describe '#relation_for' do
it 'returns relation for given object' do
subject.object.should be_an ::ActiveRecord::Relation
end
end
describe '#evaluate' do
it 'evaluates search objects' do
search = Search.new(Person, :name_eq => 'Joe Blow')
result = subject.evaluate(search)
result.should be_an ::ActiveRecord::Relation
result.to_sql.should match /#{quote_column_name("name")} = 'Joe Blow'/
end
it 'SELECTs DISTINCT when distinct: true' do
search = Search.new(Person, :name_eq => 'Joe Blow')
result = subject.evaluate(search, :distinct => true)
result.should be_an ::ActiveRecord::Relation
result.to_sql.should match /SELECT DISTINCT/
end
end
it 'contextualizes strings to attributes' do
attribute = subject.contextualize 'children_children_parent_name'
attribute.should be_a Arel::Attributes::Attribute
attribute.name.to_s.should eq 'name'
attribute.relation.table_alias.should eq 'parents_people'
end
it 'builds new associations if not yet built' do
attribute = subject.contextualize 'children_articles_title'
attribute.should be_a Arel::Attributes::Attribute
attribute.name.to_s.should eq 'title'
attribute.relation.name.should eq 'articles'
attribute.relation.table_alias.should be_nil
end
end
end
end
end