From 5c990b9d188d7886c13da17c8050db162754e0ba Mon Sep 17 00:00:00 2001 From: Alejandro Babio Date: Tue, 26 Nov 2013 10:15:18 -0300 Subject: [PATCH] Fix mysql tests. Move sort, search & admin fields from ransacker to DB. --- spec/blueprints/people.rb | 5 ++++- .../adapters/active_record/base_spec.rb | 18 +++++++++--------- spec/spec_helper.rb | 15 +++++++++------ spec/support/schema.rb | 15 +++------------ 4 files changed, 25 insertions(+), 28 deletions(-) diff --git a/spec/blueprints/people.rb b/spec/blueprints/people.rb index 42b0292..5fc983a 100644 --- a/spec/blueprints/people.rb +++ b/spec/blueprints/people.rb @@ -2,4 +2,7 @@ Person.blueprint do name email { "test@example.com" } salary -end \ No newline at end of file + only_sort + only_search + only_admin +end diff --git a/spec/ransack/adapters/active_record/base_spec.rb b/spec/ransack/adapters/active_record/base_spec.rb index 53bb710..8675f26 100644 --- a/spec/ransack/adapters/active_record/base_spec.rb +++ b/spec/ransack/adapters/active_record/base_spec.rb @@ -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 diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a25d698..77d9173 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,12 +11,15 @@ Dir[File.expand_path('../{helpers,support,blueprints}/*.rb', __FILE__)].each do end Sham.define do - name { Faker::Name.name } - title { Faker::Lorem.sentence } - body { Faker::Lorem.paragraph } - salary {|index| 30000 + (index * 1000)} - tag_name { Faker::Lorem.words(3).join(' ') } - note { Faker::Lorem.words(7).join(' ') } + name { Faker::Name.name } + title { Faker::Lorem.sentence } + body { Faker::Lorem.paragraph } + 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| diff --git a/spec/support/schema.rb b/spec/support/schema.rb index 5ecc8a5..844cb50 100644 --- a/spec/support/schema.rb +++ b/spec/support/schema.rb @@ -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