Fix mysql tests. Move sort, search & admin fields from ransacker to DB.
This commit is contained in:
parent
2d5de7301c
commit
5c990b9d18
|
@ -2,4 +2,7 @@ Person.blueprint do
|
||||||
name
|
name
|
||||||
email { "test@example.com" }
|
email { "test@example.com" }
|
||||||
salary
|
salary
|
||||||
|
only_sort
|
||||||
|
only_search
|
||||||
|
only_admin
|
||||||
end
|
end
|
|
@ -78,42 +78,42 @@ module Ransack
|
||||||
|
|
||||||
it 'allows sort by "only_sort" field' do
|
it 'allows sort by "only_sort" field' do
|
||||||
s = Person.search("s"=>{"0"=>{"dir"=>"asc", "name"=>"only_sort"}})
|
s = Person.search("s"=>{"0"=>{"dir"=>"asc", "name"=>"only_sort"}})
|
||||||
s.result.to_sql.should match /ORDER BY "people"."name" \|\| "only_sort" \|\| "people"."name" ASC/
|
s.result.to_sql.should match /ORDER BY #{quote_table_name("people")}.#{quote_column_name("only_sort")} ASC/
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't sort by 'only_search' field" do
|
it "doesn't sort by 'only_search' field" do
|
||||||
s = Person.search("s"=>{"0"=>{"dir"=>"asc", "name"=>"only_search"}})
|
s = Person.search("s"=>{"0"=>{"dir"=>"asc", "name"=>"only_search"}})
|
||||||
s.result.to_sql.should_not match /ORDER BY "people"."name" \|\| "only_search" \|\| "people"."name" ASC/
|
s.result.to_sql.should_not match /ORDER BY #{quote_table_name("people")}.#{quote_column_name("only_search")} ASC/
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'allows search by "only_search" field' do
|
it 'allows search by "only_search" field' do
|
||||||
s = Person.search(:only_search_eq => 'htimS cirA')
|
s = Person.search(:only_search_eq => 'htimS cirA')
|
||||||
s.result.to_sql.should match /WHERE "people"."name" \|\| "only_search" \|\| "people"."name" = 'htimS cirA'/
|
s.result.to_sql.should match /WHERE #{quote_table_name("people")}.#{quote_column_name("only_search")} = 'htimS cirA'/
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can't be searched by 'only_sort'" do
|
it "can't be searched by 'only_sort'" do
|
||||||
s = Person.search(:only_sort_eq => 'htimS cirA')
|
s = Person.search(:only_sort_eq => 'htimS cirA')
|
||||||
s.result.to_sql.should_not match /WHERE "people"."name" \|\| "only_sort" \|\| "people"."name" = 'htimS cirA'/
|
s.result.to_sql.should_not match /WHERE #{quote_table_name("people")}.#{quote_column_name("only_sort")} = 'htimS cirA'/
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'allows sort by "only_admin" field, if auth_object: :admin' do
|
it 'allows sort by "only_admin" field, if auth_object: :admin' do
|
||||||
s = Person.search({"s"=>{"0"=>{"dir"=>"asc", "name"=>"only_admin"}}}, {auth_object: :admin})
|
s = Person.search({"s"=>{"0"=>{"dir"=>"asc", "name"=>"only_admin"}}}, {auth_object: :admin})
|
||||||
s.result.to_sql.should match /ORDER BY "people"."name" \|\| "only_admin" \|\| "people"."name" ASC/
|
s.result.to_sql.should match /ORDER BY #{quote_table_name("people")}.#{quote_column_name("only_admin")} ASC/
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't sort by 'only_admin' field, if auth_object: nil" do
|
it "doesn't sort by 'only_admin' field, if auth_object: nil" do
|
||||||
s = Person.search("s"=>{"0"=>{"dir"=>"asc", "name"=>"only_admin"}})
|
s = Person.search("s"=>{"0"=>{"dir"=>"asc", "name"=>"only_admin"}})
|
||||||
s.result.to_sql.should_not match /ORDER BY "people"."name" \|\| "only_admin" \|\| "people"."name" ASC/
|
s.result.to_sql.should_not match /ORDER BY #{quote_table_name("people")}.#{quote_column_name("only_admin")} ASC/
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'allows search by "only_admin" field, if auth_object: :admin' do
|
it 'allows search by "only_admin" field, if auth_object: :admin' do
|
||||||
s = Person.search({:only_admin_eq => 'htimS cirA'}, {auth_object: :admin})
|
s = Person.search({:only_admin_eq => 'htimS cirA'}, {auth_object: :admin})
|
||||||
s.result.to_sql.should match /WHERE "people"."name" \|\| "only_admin" \|\| "people"."name" = 'htimS cirA'/
|
s.result.to_sql.should match /WHERE #{quote_table_name("people")}.#{quote_column_name("only_admin")} = 'htimS cirA'/
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can't be searched by 'only_admin'" do
|
it "can't be searched by 'only_admin', if auth_object: nil" do
|
||||||
s = Person.search(:only_admin_eq => 'htimS cirA')
|
s = Person.search(:only_admin_eq => 'htimS cirA')
|
||||||
s.result.to_sql.should_not match /WHERE "people"."name" \|\| "only_admin" \|\| "people"."name" = 'htimS cirA'/
|
s.result.to_sql.should_not match /WHERE #{quote_table_name("people")}.#{quote_column_name("only_admin")} = 'htimS cirA'/
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,9 @@ Sham.define do
|
||||||
salary {|index| 30000 + (index * 1000)}
|
salary {|index| 30000 + (index * 1000)}
|
||||||
tag_name { Faker::Lorem.words(3).join(' ') }
|
tag_name { Faker::Lorem.words(3).join(' ') }
|
||||||
note { Faker::Lorem.words(7).join(' ') }
|
note { Faker::Lorem.words(7).join(' ') }
|
||||||
|
only_admin { Faker::Lorem.words(3).join(' ') }
|
||||||
|
only_search { Faker::Lorem.words(3).join(' ') }
|
||||||
|
only_sort { Faker::Lorem.words(3).join(' ') }
|
||||||
end
|
end
|
||||||
|
|
||||||
RSpec.configure do |config|
|
RSpec.configure do |config|
|
||||||
|
|
|
@ -46,18 +46,6 @@ class Person < ActiveRecord::Base
|
||||||
Arel::Nodes::InfixOperation.new('||', parent.table[:name], parent.table[:name])
|
Arel::Nodes::InfixOperation.new('||', parent.table[:name], parent.table[:name])
|
||||||
end
|
end
|
||||||
|
|
||||||
ransacker :only_search do |parent|
|
|
||||||
Arel::Nodes::InfixOperation.new('|| "only_search" ||', parent.table[:name], parent.table[:name])
|
|
||||||
end
|
|
||||||
|
|
||||||
ransacker :only_sort do |parent|
|
|
||||||
Arel::Nodes::InfixOperation.new('|| "only_sort" ||', parent.table[:name], parent.table[:name])
|
|
||||||
end
|
|
||||||
|
|
||||||
ransacker :only_admin do |parent|
|
|
||||||
Arel::Nodes::InfixOperation.new('|| "only_admin" ||', parent.table[:name], parent.table[:name])
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.ransackable_attributes(auth_object = nil)
|
def self.ransackable_attributes(auth_object = nil)
|
||||||
if auth_object == :admin
|
if auth_object == :admin
|
||||||
column_names + _ransackers.keys - ['only_sort']
|
column_names + _ransackers.keys - ['only_sort']
|
||||||
|
@ -104,6 +92,9 @@ module Schema
|
||||||
t.integer :parent_id
|
t.integer :parent_id
|
||||||
t.string :name
|
t.string :name
|
||||||
t.string :email
|
t.string :email
|
||||||
|
t.string :only_search
|
||||||
|
t.string :only_sort
|
||||||
|
t.string :only_admin
|
||||||
t.integer :salary
|
t.integer :salary
|
||||||
t.boolean :awesome, :default => false
|
t.boolean :awesome, :default => false
|
||||||
t.timestamps
|
t.timestamps
|
||||||
|
|
Loading…
Reference in New Issue