2005-04-03 07:19:14 -04:00
require 'abstract_unit'
require 'fixtures/company'
require 'fixtures/topic'
2006-03-05 13:43:56 -05:00
require 'fixtures/reply'
2005-04-03 07:19:14 -04:00
require 'fixtures/entrant'
require 'fixtures/developer'
2005-09-24 19:58:13 -04:00
require 'fixtures/post'
2005-04-03 07:19:14 -04:00
class FinderTest < Test :: Unit :: TestCase
2006-01-22 04:34:41 -05:00
fixtures :companies , :topics , :entrants , :developers , :developers_projects , :posts , :accounts
2005-04-03 07:19:14 -04:00
def test_find
2005-06-10 10:58:02 -04:00
assert_equal ( topics ( :first ) . title , Topic . find ( 1 ) . title )
2005-04-03 07:19:14 -04:00
end
2006-04-27 18:39:45 -04:00
# find should handle strings that come from URLs
# (example: Category.find(params[:id]))
def test_find_with_string
assert_equal ( Topic . find ( 1 ) . title , Topic . find ( " 1 " ) . title )
end
2005-04-03 07:19:14 -04:00
def test_exists
assert ( Topic . exists? ( 1 ) )
assert ! ( Topic . exists? ( 45 ) )
assert ! ( Topic . exists? ( " foo " ) )
assert ! ( Topic . exists? ( [ 1 , 2 ] ) )
end
def test_find_by_array_of_one_id
assert_kind_of ( Array , Topic . find ( [ 1 ] ) )
assert_equal ( 1 , Topic . find ( [ 1 ] ) . length )
end
def test_find_by_ids
assert_equal ( 2 , Topic . find ( 1 , 2 ) . length )
2005-06-10 10:58:02 -04:00
assert_equal ( topics ( :second ) . title , Topic . find ( [ 2 ] ) . first . title )
2005-04-03 07:19:14 -04:00
end
2005-06-21 12:36:18 -04:00
def test_find_an_empty_array
assert_equal [ ] , Topic . find ( [ ] )
end
2005-04-03 07:19:14 -04:00
def test_find_by_ids_missing_one
assert_raises ( ActiveRecord :: RecordNotFound ) {
Topic . find ( 1 , 2 , 45 )
}
end
def test_find_all_with_limit
entrants = Entrant . find ( :all , :order = > " id ASC " , :limit = > 2 )
assert_equal ( 2 , entrants . size )
2005-06-10 10:58:02 -04:00
assert_equal ( entrants ( :first ) . name , entrants . first . name )
2005-04-03 07:19:14 -04:00
end
def test_find_all_with_prepared_limit_and_offset
2005-10-26 08:57:11 -04:00
entrants = Entrant . find ( :all , :order = > " id ASC " , :limit = > 2 , :offset = > 1 )
2005-04-03 07:19:14 -04:00
2005-10-26 08:57:11 -04:00
assert_equal ( 2 , entrants . size )
assert_equal ( entrants ( :second ) . name , entrants . first . name )
2005-07-03 08:34:22 -04:00
2005-10-26 08:57:11 -04:00
entrants = Entrant . find ( :all , :order = > " id ASC " , :limit = > 2 , :offset = > 2 )
assert_equal ( 1 , entrants . size )
assert_equal ( entrants ( :third ) . name , entrants . first . name )
2005-04-03 07:19:14 -04:00
end
2005-10-28 05:20:05 -04:00
2006-03-18 16:27:40 -05:00
def test_find_all_with_limit_and_offset_and_multiple_orderings
developers = Developer . find ( :all , :order = > " salary ASC, id DESC " , :limit = > 3 , :offset = > 1 )
assert_equal [ " David " , " fixture_10 " , " fixture_9 " ] , developers . collect { | d | d . name }
end
2005-10-28 05:20:05 -04:00
def test_find_with_limit_and_condition
developers = Developer . find ( :all , :order = > " id DESC " , :conditions = > " salary = 100000 " , :limit = > 3 , :offset = > 7 )
assert_equal ( 1 , developers . size )
assert_equal ( " fixture_3 " , developers . first . name )
end
2005-04-03 07:19:14 -04:00
def test_find_with_entire_select_statement
topics = Topic . find_by_sql " SELECT * FROM topics WHERE author_name = 'Mary' "
assert_equal ( 1 , topics . size )
2005-06-10 10:58:02 -04:00
assert_equal ( topics ( :second ) . title , topics . first . title )
2005-04-03 07:19:14 -04:00
end
def test_find_with_prepared_select_statement
topics = Topic . find_by_sql [ " SELECT * FROM topics WHERE author_name = ? " , " Mary " ]
assert_equal ( 1 , topics . size )
2005-06-10 10:58:02 -04:00
assert_equal ( topics ( :second ) . title , topics . first . title )
2005-04-03 07:19:14 -04:00
end
def test_find_first
first = Topic . find ( :first , :conditions = > " title = 'The First Topic' " )
2005-06-10 10:58:02 -04:00
assert_equal ( topics ( :first ) . title , first . title )
2005-04-03 07:19:14 -04:00
end
def test_find_first_failing
first = Topic . find ( :first , :conditions = > " title = 'The First Topic!' " )
assert_nil ( first )
end
def test_unexisting_record_exception_handling
assert_raises ( ActiveRecord :: RecordNotFound ) {
Topic . find ( 1 ) . parent
}
2006-03-05 13:43:56 -05:00
Topic . find ( 2 ) . topic
2005-04-03 07:19:14 -04:00
end
2005-07-14 03:18:26 -04:00
def test_find_only_some_columns
2005-10-22 12:43:39 -04:00
topic = Topic . find ( 1 , :select = > " author_name " )
assert_raises ( NoMethodError ) { topic . title }
assert_equal " David " , topic . author_name
assert ! topic . attribute_present? ( " title " )
assert ! topic . respond_to? ( " title " )
assert topic . attribute_present? ( " author_name " )
assert topic . respond_to? ( " author_name " )
2005-07-14 03:18:26 -04:00
end
2005-04-03 07:19:14 -04:00
2006-06-03 18:15:06 -04:00
def test_find_on_array_conditions
2005-10-06 00:15:14 -04:00
assert Topic . find ( 1 , :conditions = > [ " approved = ? " , false ] )
assert_raises ( ActiveRecord :: RecordNotFound ) { Topic . find ( 1 , :conditions = > [ " approved = ? " , true ] ) }
2005-04-03 07:19:14 -04:00
end
2006-06-03 18:15:06 -04:00
def test_find_on_hash_conditions
assert Topic . find ( 1 , :conditions = > { :approved = > false } )
assert_raises ( ActiveRecord :: RecordNotFound ) { Topic . find ( 1 , :conditions = > { :approved = > true } ) }
end
def test_find_on_multiple_hash_conditions
assert Topic . find ( 1 , :conditions = > { :author_name = > " David " , :title = > " The First Topic " , :replies_count = > 1 , :approved = > false } )
assert_raises ( ActiveRecord :: RecordNotFound ) { Topic . find ( 1 , :conditions = > { :author_name = > " David " , :title = > " The First Topic " , :replies_count = > 1 , :approved = > true } ) }
assert_raises ( ActiveRecord :: RecordNotFound ) { Topic . find ( 1 , :conditions = > { :author_name = > " David " , :title = > " HHC " , :replies_count = > 1 , :approved = > false } ) }
assert_raises ( ActiveRecord :: RecordNotFound ) { Topic . find ( 1 , :conditions = > { :author_name = > " David " , :title = > " The First Topic " , :replies_count = > 1 , :approved = > true } ) }
end
def test_condition_array_interpolation
2005-04-03 07:19:14 -04:00
assert_kind_of Firm , Company . find ( :first , :conditions = > [ " name = '%s' " , " 37signals " ] )
assert_nil Company . find ( :first , :conditions = > [ " name = '%s' " , " 37signals! " ] )
assert_nil Company . find ( :first , :conditions = > [ " name = '%s' " , " 37signals!' OR 1=1 " ] )
assert_kind_of Time , Topic . find ( :first , :conditions = > [ " id = %d " , 1 ] ) . written_on
end
2006-06-03 18:15:06 -04:00
def test_condition_hash_interpolation
assert_kind_of Firm , Company . find ( :first , :conditions = > { :name = > " 37signals " } )
assert_nil Company . find ( :first , :conditions = > { :name = > " 37signals! " } )
assert_kind_of Time , Topic . find ( :first , :conditions = > { :id = > 1 } ) . written_on
end
def test_hash_condition_find_malformed
assert_raises ( ActiveRecord :: StatementInvalid ) {
Company . find ( :first , :conditions = > { :id = > 2 , :dhh = > true } )
}
end
def test_hash_condition_find_with_escaped_characters
Company . create ( " name " = > " Ain't noth'n like' \# stuff " )
assert Company . find ( :first , :conditions = > { :name = > " Ain't noth'n like' \# stuff " } )
end
2005-04-03 07:19:14 -04:00
def test_bind_variables
assert_kind_of Firm , Company . find ( :first , :conditions = > [ " name = ? " , " 37signals " ] )
assert_nil Company . find ( :first , :conditions = > [ " name = ? " , " 37signals! " ] )
assert_nil Company . find ( :first , :conditions = > [ " name = ? " , " 37signals!' OR 1=1 " ] )
assert_kind_of Time , Topic . find ( :first , :conditions = > [ " id = ? " , 1 ] ) . written_on
assert_raises ( ActiveRecord :: PreparedStatementInvalid ) {
Company . find ( :first , :conditions = > [ " id=? AND name = ? " , 2 ] )
}
assert_raises ( ActiveRecord :: PreparedStatementInvalid ) {
Company . find ( :first , :conditions = > [ " id=? " , 2 , 3 , 4 ] )
}
end
def test_bind_variables_with_quotes
Company . create ( " name " = > " 37signals' go'es agains " )
assert Company . find ( :first , :conditions = > [ " name = ? " , " 37signals' go'es agains " ] )
end
def test_named_bind_variables_with_quotes
Company . create ( " name " = > " 37signals' go'es agains " )
assert Company . find ( :first , :conditions = > [ " name = :name " , { :name = > " 37signals' go'es agains " } ] )
end
def test_bind_arity
assert_nothing_raised { bind '' }
assert_raises ( ActiveRecord :: PreparedStatementInvalid ) { bind '' , 1 }
assert_raises ( ActiveRecord :: PreparedStatementInvalid ) { bind '?' }
assert_nothing_raised { bind '?' , 1 }
assert_raises ( ActiveRecord :: PreparedStatementInvalid ) { bind '?' , 1 , 1 }
end
def test_named_bind_variables
assert_equal '1' , bind ( ':a' , :a = > 1 ) # ' ruby-mode
assert_equal '1 1' , bind ( ':a :a' , :a = > 1 ) # ' ruby-mode
assert_kind_of Firm , Company . find ( :first , :conditions = > [ " name = :name " , { :name = > " 37signals " } ] )
assert_nil Company . find ( :first , :conditions = > [ " name = :name " , { :name = > " 37signals! " } ] )
assert_nil Company . find ( :first , :conditions = > [ " name = :name " , { :name = > " 37signals!' OR 1=1 " } ] )
assert_kind_of Time , Topic . find ( :first , :conditions = > [ " id = :id " , { :id = > 1 } ] ) . written_on
end
2005-06-16 02:44:48 -04:00
def test_bind_enumerable
2005-04-03 07:19:14 -04:00
assert_equal '1,2,3' , bind ( '?' , [ 1 , 2 , 3 ] )
assert_equal %( 'a','b','c' ) , bind ( '?' , %w( a b c ) )
assert_equal '1,2,3' , bind ( ':a' , :a = > [ 1 , 2 , 3 ] )
assert_equal %( 'a','b','c' ) , bind ( ':a' , :a = > %w( a b c ) ) # '
2005-06-16 02:44:48 -04:00
require 'set'
assert_equal '1,2,3' , bind ( '?' , Set . new ( [ 1 , 2 , 3 ] ) )
assert_equal %( 'a','b','c' ) , bind ( '?' , Set . new ( %w( a b c ) ) )
assert_equal '1,2,3' , bind ( ':a' , :a = > Set . new ( [ 1 , 2 , 3 ] ) )
assert_equal %( 'a','b','c' ) , bind ( ':a' , :a = > Set . new ( %w( a b c ) ) ) # '
2005-04-03 07:19:14 -04:00
end
2006-05-31 21:43:20 -04:00
def test_bind_empty_enumerable
quoted_nil = ActiveRecord :: Base . connection . quote ( nil )
assert_equal quoted_nil , bind ( '?' , [ ] )
assert_equal " in ( #{ quoted_nil } ) " , bind ( ' in (?)' , [ ] )
assert_equal " foo in ( #{ quoted_nil } ) " , bind ( 'foo in (?)' , [ ] )
end
2005-06-16 06:13:37 -04:00
def test_bind_string
assert_equal " '' " , bind ( '?' , '' )
end
2006-05-31 21:43:20 -04:00
def test_bind_record
o = Struct . new ( :quoted_id ) . new ( 1 )
assert_equal '1' , bind ( '?' , o )
os = [ o ] * 3
assert_equal '1,1,1' , bind ( '?' , os )
end
2005-04-03 07:19:14 -04:00
def test_string_sanitation
assert_not_equal " 'something ' 1=1' " , ActiveRecord :: Base . sanitize ( " something ' 1=1 " )
assert_equal " 'something; select table' " , ActiveRecord :: Base . sanitize ( " something; select table " )
end
def test_count
assert_equal ( 0 , Entrant . count ( " id > 3 " ) )
assert_equal ( 1 , Entrant . count ( [ " id > ? " , 2 ] ) )
assert_equal ( 2 , Entrant . count ( [ " id > ? " , 1 ] ) )
end
def test_count_by_sql
assert_equal ( 0 , Entrant . count_by_sql ( " SELECT COUNT(*) FROM entrants WHERE id > 3 " ) )
assert_equal ( 1 , Entrant . count_by_sql ( [ " SELECT COUNT(*) FROM entrants WHERE id > ? " , 2 ] ) )
assert_equal ( 2 , Entrant . count_by_sql ( [ " SELECT COUNT(*) FROM entrants WHERE id > ? " , 1 ] ) )
end
def test_find_by_one_attribute
2005-06-10 10:58:02 -04:00
assert_equal topics ( :first ) , Topic . find_by_title ( " The First Topic " )
2005-04-03 07:19:14 -04:00
assert_nil Topic . find_by_title ( " The First Topic! " )
end
2006-01-22 04:34:41 -05:00
def test_find_by_one_attribute_with_order_option
2006-01-22 15:55:14 -05:00
assert_equal accounts ( :signals37 ) , Account . find_by_credit_limit ( 50 , :order = > 'id' )
2006-01-22 04:34:41 -05:00
assert_equal accounts ( :rails_core_account ) , Account . find_by_credit_limit ( 50 , :order = > 'id DESC' )
end
def test_find_by_one_attribute_with_conditions
assert_equal accounts ( :rails_core_account ) , Account . find_by_credit_limit ( 50 , :conditions = > [ 'firm_id = ?' , 6 ] )
end
def test_find_by_one_attribute_with_several_options
assert_equal accounts ( :unknown ) , Account . find_by_credit_limit ( 50 , :order = > 'id DESC' , :conditions = > [ 'id != ?' , 3 ] )
end
2005-04-03 07:19:14 -04:00
def test_find_by_one_missing_attribute
assert_raises ( NoMethodError ) { Topic . find_by_undertitle ( " The First Topic! " ) }
end
def test_find_by_two_attributes
2005-06-10 10:58:02 -04:00
assert_equal topics ( :first ) , Topic . find_by_title_and_author_name ( " The First Topic " , " David " )
2005-04-03 07:19:14 -04:00
assert_nil Topic . find_by_title_and_author_name ( " The First Topic " , " Mary " )
end
def test_find_all_by_one_attribute
topics = Topic . find_all_by_content ( " Have a nice day " )
assert_equal 2 , topics . size
2005-06-10 10:58:02 -04:00
assert topics . include? ( topics ( :first ) )
2005-04-03 07:19:14 -04:00
assert_equal [ ] , Topic . find_all_by_title ( " The First Topic!! " )
end
2005-04-17 13:16:24 -04:00
def test_find_all_by_one_attribute_with_options
topics = Topic . find_all_by_content ( " Have a nice day " , :order = > " id DESC " )
2005-06-10 10:58:02 -04:00
assert topics ( :first ) , topics . last
2005-04-17 13:16:24 -04:00
topics = Topic . find_all_by_content ( " Have a nice day " , :order = > " id " )
2005-06-10 10:58:02 -04:00
assert topics ( :first ) , topics . first
2005-04-17 13:16:24 -04:00
end
2005-04-03 07:19:14 -04:00
2005-05-02 01:34:27 -04:00
def test_find_all_by_array_attribute
assert_equal 2 , Topic . find_all_by_title ( [ " The First Topic " , " The Second Topic's of the day " ] ) . size
end
2005-04-03 07:19:14 -04:00
def test_find_all_by_boolean_attribute
topics = Topic . find_all_by_approved ( false )
assert_equal 1 , topics . size
2005-06-10 10:58:02 -04:00
assert topics . include? ( topics ( :first ) )
2005-04-03 07:19:14 -04:00
topics = Topic . find_all_by_approved ( true )
assert_equal 1 , topics . size
2005-06-10 10:58:02 -04:00
assert topics . include? ( topics ( :second ) )
2005-04-03 07:19:14 -04:00
end
def test_find_by_nil_attribute
topic = Topic . find_by_last_read nil
assert_not_nil topic
assert_nil topic . last_read
end
def test_find_all_by_nil_attribute
topics = Topic . find_all_by_last_read nil
assert_equal 1 , topics . size
assert_nil topics [ 0 ] . last_read
end
def test_find_by_nil_and_not_nil_attributes
topic = Topic . find_by_last_read_and_author_name nil , " Mary "
assert_equal " Mary " , topic . author_name
end
def test_find_all_by_nil_and_not_nil_attributes
topics = Topic . find_all_by_last_read_and_author_name nil , " Mary "
assert_equal 1 , topics . size
assert_equal " Mary " , topics [ 0 ] . author_name
end
2005-11-04 14:39:50 -05:00
def test_find_or_create_from_one_attribute
number_of_companies = Company . count
sig38 = Company . find_or_create_by_name ( " 38signals " )
assert_equal number_of_companies + 1 , Company . count
assert_equal sig38 , Company . find_or_create_by_name ( " 38signals " )
2006-06-20 18:48:52 -04:00
assert ! sig38 . new_record?
2005-11-04 14:39:50 -05:00
end
def test_find_or_create_from_two_attributes
2006-02-18 23:06:37 -05:00
number_of_topics = Topic . count
another = Topic . find_or_create_by_title_and_author_name ( " Another topic " , " John " )
assert_equal number_of_topics + 1 , Topic . count
assert_equal another , Topic . find_or_create_by_title_and_author_name ( " Another topic " , " John " )
2006-06-20 18:48:52 -04:00
assert ! another . new_record?
end
def test_find_or_initialize_from_one_attribute
sig38 = Company . find_or_initialize_by_name ( " 38signals " )
assert_equal " 38signals " , sig38 . name
assert sig38 . new_record?
end
def test_find_or_initialize_from_two_attributes
another = Topic . find_or_initialize_by_title_and_author_name ( " Another topic " , " John " )
assert_equal " Another topic " , another . title
assert_equal " John " , another . author_name
assert another . new_record?
2005-11-04 14:39:50 -05:00
end
2005-04-03 07:19:14 -04:00
def test_find_with_bad_sql
assert_raises ( ActiveRecord :: StatementInvalid ) { Topic . find_by_sql " select 1 from badtable " }
end
2005-10-06 18:21:10 -04:00
def test_find_with_invalid_params
assert_raises ( ArgumentError ) { Topic . find :first , :join = > " It should be `joins' " }
assert_raises ( ArgumentError ) { Topic . find :first , :conditions = > '1 = 1' , :join = > " It should be `joins' " }
end
2005-04-03 07:19:14 -04:00
def test_find_all_with_limit
2005-04-17 13:16:24 -04:00
first_five_developers = Developer . find :all , :order = > 'id ASC' , :limit = > 5
2005-04-03 07:19:14 -04:00
assert_equal 5 , first_five_developers . length
assert_equal 'David' , first_five_developers . first . name
assert_equal 'fixture_5' , first_five_developers . last . name
2005-04-17 13:16:24 -04:00
no_developers = Developer . find :all , :order = > 'id ASC' , :limit = > 0
2005-04-03 07:19:14 -04:00
assert_equal 0 , no_developers . length
end
2005-07-03 08:34:22 -04:00
2005-04-03 07:19:14 -04:00
def test_find_all_with_limit_and_offset
first_three_developers = Developer . find :all , :order = > 'id ASC' , :limit = > 3 , :offset = > 0
second_three_developers = Developer . find :all , :order = > 'id ASC' , :limit = > 3 , :offset = > 3
last_two_developers = Developer . find :all , :order = > 'id ASC' , :limit = > 2 , :offset = > 8
assert_equal 3 , first_three_developers . length
assert_equal 3 , second_three_developers . length
assert_equal 2 , last_two_developers . length
assert_equal 'David' , first_three_developers . first . name
assert_equal 'fixture_4' , second_three_developers . first . name
assert_equal 'fixture_9' , last_two_developers . first . name
end
2005-11-08 16:39:13 -05:00
def test_find_all_with_limit_and_offset_and_multiple_order_clauses
first_three_posts = Post . find :all , :order = > 'author_id, id' , :limit = > 3 , :offset = > 0
second_three_posts = Post . find :all , :order = > ' author_id,id ' , :limit = > 3 , :offset = > 3
last_posts = Post . find :all , :order = > ' author_id, id ' , :limit = > 3 , :offset = > 6
assert_equal [ [ 0 , 3 ] , [ 1 , 1 ] , [ 1 , 2 ] ] , first_three_posts . map { | p | [ p . author_id , p . id ] }
assert_equal [ [ 1 , 4 ] , [ 1 , 5 ] , [ 1 , 6 ] ] , second_three_posts . map { | p | [ p . author_id , p . id ] }
assert_equal [ [ 2 , 7 ] ] , last_posts . map { | p | [ p . author_id , p . id ] }
end
2005-05-19 13:23:28 -04:00
def test_find_all_with_join
2005-06-25 07:47:37 -04:00
developers_on_project_one = Developer . find (
:all ,
:joins = > 'LEFT JOIN developers_projects ON developers.id = developers_projects.developer_id' ,
:conditions = > 'project_id=1'
)
2006-03-15 22:24:40 -05:00
assert_equal 3 , developers_on_project_one . length
2005-06-11 22:27:19 -04:00
developer_names = developers_on_project_one . map { | d | d . name }
assert developer_names . include? ( 'David' )
assert developer_names . include? ( 'Jamis' )
2005-05-19 13:23:28 -04:00
end
2005-09-24 19:58:13 -04:00
def test_find_by_id_with_conditions_with_or
assert_nothing_raised do
Post . find ( [ 1 , 2 , 3 ] ,
2005-11-16 03:16:54 -05:00
:conditions = > " posts.id <= 3 OR posts. #{ QUOTED_TYPE } = 'Post' " )
2005-09-24 19:58:13 -04:00
end
end
2005-05-19 13:23:28 -04:00
2006-05-31 21:43:20 -04:00
def test_find_by_empty_ids
assert_equal [ ] , Post . find ( [ ] )
end
def test_find_by_empty_in_condition
assert_equal [ ] , Post . find ( :all , :conditions = > [ 'id in (?)' , [ ] ] )
end
def test_find_by_records
2006-05-31 22:04:35 -04:00
p1 , p2 = Post . find ( :all , :limit = > 2 , :order = > 'id asc' )
assert_equal [ p1 , p2 ] , Post . find ( :all , :conditions = > [ 'id in (?)' , [ p1 , p2 ] ] , :order = > 'id asc' )
assert_equal [ p1 , p2 ] , Post . find ( :all , :conditions = > [ 'id in (?)' , [ p1 , p2 . id ] ] , :order = > 'id asc' )
2006-05-31 21:43:20 -04:00
end
2005-09-24 15:50:57 -04:00
def test_select_value
assert_equal " 37signals " , Company . connection . select_value ( " SELECT name FROM companies WHERE id = 1 " )
assert_nil Company . connection . select_value ( " SELECT name FROM companies WHERE id = -1 " )
# make sure we didn't break count...
assert_equal 0 , Company . count_by_sql ( " SELECT COUNT(*) FROM companies WHERE name = 'Halliburton' " )
assert_equal 1 , Company . count_by_sql ( " SELECT COUNT(*) FROM companies WHERE name = '37signals' " )
end
def test_select_values
2005-10-26 08:47:23 -04:00
assert_equal [ " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " ] , Company . connection . select_values ( " SELECT id FROM companies ORDER BY id " ) . map! { | i | i . to_s }
2005-10-16 16:50:06 -04:00
assert_equal [ " 37signals " , " Summit " , " Microsoft " , " Flamboyant Software " , " Ex Nihilo " , " RailsCore " , " Leetsoft " , " Jadedpixel " ] , Company . connection . select_values ( " SELECT name FROM companies ORDER BY id " )
2005-09-24 15:50:57 -04:00
end
2005-04-03 07:19:14 -04:00
protected
def bind ( statement , * vars )
if vars . first . is_a? ( Hash )
ActiveRecord :: Base . send ( :replace_named_bind_variables , statement , vars . first )
else
ActiveRecord :: Base . send ( :replace_bind_variables , statement , vars )
end
end
end