1
0
Fork 0
mirror of https://github.com/activerecord-hackery/ransack.git synced 2022-11-09 13:47:45 -05:00
activerecord-hackery--ransack/spec/ransack/nodes/condition_spec.rb
2016-02-16 01:07:54 -08:00

66 lines
1.8 KiB
Ruby

require 'spec_helper'
module Ransack
module Nodes
describe Condition do
context 'with an alias' do
subject {
Condition.extract(
Context.for(Person), 'term_start', Person.first(2).map(&:name)
)
}
specify { expect(subject.combinator).to eq 'or' }
specify { expect(subject.predicate.name).to eq 'start' }
it 'converts the alias to the correct attributes' do
expect(subject.attributes.map(&:name)).to eq(['name', 'email'])
end
end
context 'with multiple values and an _any predicate' do
subject {
Condition.extract(
Context.for(Person), 'name_eq_any', Person.first(2).map(&:name)
)
}
specify { expect(subject.values.size).to eq(2) }
end
describe '#negative?' do
let(:context) { Context.for(Person) }
let(:eq) { Condition.extract(context, 'name_eq', 'A') }
let(:not_eq) { Condition.extract(context, 'name_not_eq', 'A') }
specify { expect(not_eq.negative?).to be true }
specify { expect(eq.negative?).to be false }
end
context 'with an invalid predicate' do
subject {
Condition.extract(
Context.for(Person), 'name_invalid', Person.first.name
)
}
context "when ignore_unknown_conditions is false" do
before do
Ransack.configure { |c| c.ignore_unknown_conditions = false }
end
specify { expect { subject }.to raise_error ArgumentError }
end
context "when ignore_unknown_conditions is true" do
before do
Ransack.configure { |c| c.ignore_unknown_conditions = true }
end
specify { expect(subject).to be_nil }
end
end
end
end
end