52 lines
1.7 KiB
Ruby
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
|