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
|
||||
email { "test@example.com" }
|
||||
salary
|
||||
only_sort
|
||||
only_search
|
||||
only_admin
|
||||
end
|
|
@ -78,42 +78,42 @@ module Ransack
|
|||
|
||||
it 'allows sort by "only_sort" field' do
|
||||
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
|
||||
|
||||
it "doesn't sort by 'only_search' field" do
|
||||
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
|
||||
|
||||
it 'allows search by "only_search" field' do
|
||||
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
|
||||
|
||||
it "can't be searched by 'only_sort'" do
|
||||
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
|
||||
|
||||
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.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
|
||||
|
||||
it "doesn't sort by 'only_admin' field, if auth_object: nil" do
|
||||
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
|
||||
|
||||
it 'allows search by "only_admin" field, if auth_object: :admin' do
|
||||
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
|
||||
|
||||
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.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
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@ Sham.define do
|
|||
salary {|index| 30000 + (index * 1000)}
|
||||
tag_name { Faker::Lorem.words(3).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
|
||||
|
||||
RSpec.configure do |config|
|
||||
|
|
|
@ -46,18 +46,6 @@ class Person < ActiveRecord::Base
|
|||
Arel::Nodes::InfixOperation.new('||', parent.table[:name], parent.table[:name])
|
||||
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)
|
||||
if auth_object == :admin
|
||||
column_names + _ransackers.keys - ['only_sort']
|
||||
|
@ -104,6 +92,9 @@ module Schema
|
|||
t.integer :parent_id
|
||||
t.string :name
|
||||
t.string :email
|
||||
t.string :only_search
|
||||
t.string :only_sort
|
||||
t.string :only_admin
|
||||
t.integer :salary
|
||||
t.boolean :awesome, :default => false
|
||||
t.timestamps
|
||||
|
|
Loading…
Reference in New Issue