added mongoid/predicate_spec
This commit is contained in:
parent
718a05b331
commit
9e1204e179
|
@ -0,0 +1,6 @@
|
|||
describe 'Ransack' do
|
||||
it 'can be required without errors' do
|
||||
output = `bundle exec ruby -e "require 'ransack'" 2>&1`
|
||||
expect(output).to be_empty
|
||||
end
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
module RansackHelper
|
||||
def quote_table_name(table)
|
||||
# ActiveRecord::Base.connection.quote_table_name(table)
|
||||
table
|
||||
end
|
||||
|
||||
def quote_column_name(column)
|
||||
# ActiveRecord::Base.connection.quote_column_name(column)
|
||||
column
|
||||
end
|
||||
end
|
|
@ -0,0 +1,110 @@
|
|||
require 'mongoid_spec_helper'
|
||||
|
||||
module Ransack
|
||||
describe Predicate do
|
||||
|
||||
before do
|
||||
@s = Search.new(Person)
|
||||
end
|
||||
|
||||
shared_examples 'wildcard escaping' do |method, value|
|
||||
it 'automatically converts integers to strings' do
|
||||
subject.parent_id_cont = 1
|
||||
expect { subject.result }.to_not raise_error
|
||||
end
|
||||
|
||||
it "escapes '%', '.' and '\\\\' in value" do
|
||||
subject.send(:"#{method}=", '%._\\')
|
||||
expect(subject.result.selector).to eq(value)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'eq' do
|
||||
it 'generates an equality condition for boolean true' do
|
||||
@s.awesome_eq = true
|
||||
expect(@s.result.selector).to eq({ "awesome" => true })
|
||||
end
|
||||
|
||||
it 'generates an equality condition for boolean false' do
|
||||
@s.awesome_eq = false
|
||||
expect(@s.result.selector).to eq({ "awesome" => false })
|
||||
end
|
||||
|
||||
it 'does not generate a condition for nil' do
|
||||
@s.awesome_eq = nil
|
||||
expect(@s.result.selector).to eq({ })
|
||||
end
|
||||
end
|
||||
|
||||
describe 'cont' do
|
||||
|
||||
it_has_behavior 'wildcard escaping', :name_cont, { 'name' => /%\._\\/i } do
|
||||
subject { @s }
|
||||
end
|
||||
|
||||
it 'generates a regex query' do
|
||||
@s.name_cont = 'ric'
|
||||
expect(@s.result.selector).to eq({ 'name' => /ric/i })
|
||||
end
|
||||
end
|
||||
|
||||
describe 'not_cont' do
|
||||
it_has_behavior 'wildcard escaping', :name_not_cont, { "$not" => { 'name' => /%\._\\/i } } do
|
||||
subject { @s }
|
||||
end
|
||||
|
||||
it 'generates a regex query' do
|
||||
@s.name_not_cont = 'ric'
|
||||
expect(@s.result.selector).to eq({ "$not" => { 'name' => /ric/i } })
|
||||
end
|
||||
end
|
||||
|
||||
describe 'null' do
|
||||
it 'generates a value IS NULL query' do
|
||||
@s.name_null = true
|
||||
expect(@s.result.selector).to eq({ 'name' => nil })
|
||||
end
|
||||
|
||||
it 'generates a value IS NOT NULL query when assigned false' do
|
||||
@s.name_null = false
|
||||
expect(@s.result.selector).to eq( { 'name' => { '$ne' => nil } })
|
||||
end
|
||||
end
|
||||
|
||||
describe 'not_null' do
|
||||
it 'generates a value IS NOT NULL query' do
|
||||
@s.name_not_null = true
|
||||
expect(@s.result.selector).to eq({ 'name' => { '$ne' => nil } })
|
||||
end
|
||||
|
||||
it 'generates a value IS NULL query when assigned false' do
|
||||
@s.name_not_null = false
|
||||
expect(@s.result.selector).to eq({ 'name' => nil })
|
||||
end
|
||||
end
|
||||
|
||||
describe 'present' do
|
||||
it %q[generates a value IS NOT NULL AND value != '' query] do
|
||||
@s.name_present = true
|
||||
expect(@s.result.selector).to eq({ '$and' => [ { 'name' => { '$ne' => nil } }, { 'name' => { '$ne' => '' } } ] })
|
||||
end
|
||||
|
||||
it %q[generates a value IS NULL OR value = '' query when assigned false] do
|
||||
@s.name_present = false
|
||||
expect(@s.result.selector).to eq({ '$or' => [ { 'name' => nil }, { 'name' => '' } ] })
|
||||
end
|
||||
end
|
||||
|
||||
describe 'blank' do
|
||||
it %q[generates a value IS NULL OR value = '' query] do
|
||||
@s.name_blank = true
|
||||
expect(@s.result.selector).to eq({ '$or' => [ { 'name' => nil}, { 'name' => '' } ] })
|
||||
end
|
||||
|
||||
it %q[generates a value IS NOT NULL AND value != '' query when assigned false] do
|
||||
@s.name_blank = false
|
||||
expect(@s.result.selector).to eq({ '$and' => [ { 'name' => { '$ne' => nil}}, { 'name' => { '$ne' => '' }} ] })
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -9,7 +9,7 @@ I18n.enforce_available_locales = false
|
|||
Time.zone = 'Eastern Time (US & Canada)'
|
||||
I18n.load_path += Dir[File.join(File.dirname(__FILE__), 'support', '*.yml')]
|
||||
|
||||
Dir[File.expand_path('../{helpers,mongoid/support}/*.rb', __FILE__)]
|
||||
Dir[File.expand_path('../{mongoid/helpers,mongoid/support}/*.rb', __FILE__)]
|
||||
.each do |f|
|
||||
require f
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue